在 JavaScript 中解析 JSON 日期
How to parse a JSON Date in JavaScript
要解析 JSON 日期:
- 使用该
toJSON()
方法获取Date
对象的字符串表示形式。 - 将 JSON 字符串传递给
Date()
构造函数。 - 构造
Date()
函数将解析 ISO 字符串并创建一个Date
对象。
索引.js
const json = new Date().toJSON(); console.log(json); // 👉️ "2022-01-23T09:04:45.904Z" const date = new Date(json); console.log(date); // 👉️ Sun Jan 23 2022 11:04:45
可以在有效对象上
调用toJSON()方法。Date
该方法以 ISO 8601 格式返回给定日期的字符串表示形式。
您可以将调用该方法的结果传递给
Date()Date
构造函数,以从 JSON 字符串
创建对象。
这是相同的示例,但使用了更手动的方法。
索引.js
const json = JSON.stringify(new Date().toISOString()); console.log(json); // 👉️ "2022-01-23T09:04:45.904Z" const date = new Date(JSON.parse(json)); console.log(date); // 👉️ Sun Jan 23 2022 11:04:45 // 👇️ "2022-01-23T09:04:45.904Z" console.log(date.toISOString());
我们使用
toISOString()
方法获取一个字符串,该字符串表示 ISO 8601 格式的给定日期 –
YYYY-MM-DDTHH:mm:ss.sssZ
。
使用该toISOString
方法时,您始终会根据世界时获取日期。
该
toJSON()
方法使用toISOString()
引擎盖下的方法,因此两个代码片段是等效的,第二个代码片段更明确。该toISOString
方法按照世界时返回结果,因此字符串显示的时间为09:04:45
,而Date
对象的时间设置为
11:04:45
。
这是因为我的时区2
比协调世界时 (UTC) 早几个小时。
当谈到存储日期时,大多数时候,建议在数据库中存储时间戳或有效的 ISO 8601 字符串 (UTC)。
例如,如果您在数据库中存储当地时间午夜 (00:00),您将不知道在东京(日本)、巴黎(法国)、纽约(美国)等地是否是午夜。这些都是相隔数小时的不同时刻。
为了保持一致性,当您必须向用户呈现日期和时间时,您应该主要使用本地时间,但将实际值存储在 UTC (=GMT) 中。
Date
在 JavaScript中获取 a 的 ISO 格式字符串非常容易。您只需使用该toISOString()
方法即可。
索引.js
// 👇️ "2022-01-23T09:24:54.995z" console.log(new Date().toISOString());
使用该JSON.stringify
方法可以轻松地将字符串转换为 JSON,然后可以通过网络传输。
构造Date()
函数知道如何解析 ISO 8601 字符串,因此您所要做的就是解析 JSON 并将 ISO 字符串传递给构造函数。
索引.js
const json = JSON.stringify(new Date().toISOString()); console.log(json); // 👉️ "2022-01-23T09:04:45.904Z" const date = new Date(JSON.parse(json)); console.log(date); // 👉️ Sun Jan 23 2022 11:04:45