【问题标题】:Format JSON DateTime格式化 JSON 日期时间
【发布时间】:2020-01-22 15:31:51
【问题描述】:

目前,我的所有日​​期都在我的 JSON 字符串中以字母 T 返回。例如:2019-02-03T06:48:07。有没有办法将 JSON 字符串更改为 02-03-2019 06:48:07 返回?

我还使用 javascript 将当前日期加载到数据表中。

【问题讨论】:

  • 你可以把T去掉。你试过什么?
  • 你的问题有点含糊。我假设这个 JSON 数据来自某种 API。你在维护这个 API 吗?如果是这样,请更改数据以返回您选择的任何格式的日期/时间。
  • 是的,我管理 API。好的,我会考虑改变这一点。
  • 您可能需要考虑不在 API 上更改它。这取决于您希望 API 的可重用程度,但通常 ISO 8601 格式是 API 中日期/时间信息的首选格式。这允许客户端代码确定格式。如果您想在以后更改格式,更改和部署客户端代码通常比更改 API 更容易。

标签: javascript json datatable


【解决方案1】:

您可以将您的字符串转换为Date 对象,然后将其格式化为:

let jsonString = "2019-02-03T06:48:07";

// You should set your own timezone and options.
console.log(new Date(jsonString).toLocaleString('en-US', {hour12: false}))

欲了解更多信息,请访问:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

【讨论】:

  • 有效,有没有办法删除日期后的逗号? 2020 年 1 月 10 日,09:21:33
  • 您可以使用替换,但它可能会出现意外行为。有关更多信息,请参阅此问题:stackoverflow.com/questions/49982572/…
【解决方案2】:

存在 T 是因为这是标准的 ISO 8601 格式。它使得在客户端解析变得非常容易:

var myDate = new Date('2019-02-03T06:48:07')

使用 myDate,您可以进行任何您希望的格式设置。假设您有另一个函数来处理前导零,可能是这样的:

var myFormattedDate = padLeft(myDate.getMonth() + 1, '0') + '-' + 
                      padLeft(myDate.getDay(), '0') + '-'
                      myDate.getFullYear() + ' ' +
                      // etc

请注意,您的时间戳缺少任何时区信息。使用此代码,无论用户的本地时区是什么,它都将在客户端进行解释。如果是 UTC 时间,那么您可以通过在 Date 构造函数中解析之前将“Z”或“+00:00”添加到时间戳来纠正此问题。

如果您能够添加一个库来提供帮助,那么使用moment.js 这一切都会变得容易得多:

myFormattedDate = moment('2019-02-03T06:48:07').format('MM/DD/YYYY HH:mm:ss');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2011-11-20
    • 2018-06-15
    • 1970-01-01
    相关资源
    最近更新 更多