javascript - JavaScript 中的字符串到日期转换

标签 javascript json date datetime utc

我的服务返回的日期为 7/14/2016 2:40 AM +00:00。如何在 JS 中将其转换为 UTC?

尝试过:

new Date("7/14/2016 2:40 AM +00:00").toISOString();

在数据库中,日期已存储为 UTC,因此当我显示日期时,我希望将其显示为本地时间。

最佳答案

有多种方法可以解析字符串以生成 Date 对象。

  • 一种方法是使用 Date 对象本身,将字符串传递给构造函数,或使用 Date.parse。然而,ECMAScript 规范中只需要 ISO8601 格式。任何其他输入都是特定于实现的,并且可能会也可能不会被不同的 JavaScript 运行时识别。特别是对于网络浏览器,不同浏览器支持的格式存在许多差异。

    此外,环境的区域设置也会影响值的解析方式。 1/2/2016 应该如何解析? 1月2日还是2月1日?您展示了 7/14/2016 的示例,如果在英国运行(例如),该示例将是无效输入,其中日期格式为 DD/MM/YYYY .

  • 您可以编写自定义代码将字符串拆分为多个部分,单独解析每个部分,然后组合结果。这种方法的主要问题是代码往往很僵化,有时甚至很脆弱。它应该经过充分的测试,并且需要考虑许多边缘情况。

  • 您可以使用库,这是迄今为止最简单、最灵活的方法(恕我直言)。有了一个好的库,您可以从其他人的共享经验以及(希望)您选择的库的一部分的单元测试中获得安慰。当然,使用库需要一些权衡,包括增加文件大小和放弃某种程度的控制。您应该仔细评估这些权衡。

    有许多可用于 JavaScript 的日期库。最受欢迎的可能是moment.js ,尽管还有其他可供选择,并且一些较大的框架有时已经包含类似的功能。

    这是一个使用 moment.js 的示例:

    var i = "7/14/2016 2:40 AM +00:00";
    var f = "M/D/YYYY h:mm A Z";
    var m = moment(i, f);
    var o = m.format(f); // will be in the local time, in the same format as the input
    var d = m.toDate();  // if you really want a Date object
    

关于javascript - JavaScript 中的字符串到日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38383730/

相关文章:

javascript - 在vue中包含外部js的标准方法是什么

javascript - jQuery UI 对话框标题中的图标

android - ProgressDialog 或 ProgressBar 会减慢运行 Android 4.1 的应用程序

ruby-on-rails - 使用 Ruby on Rails 从另一个 Web 服务获取和解析 JSON

JAVA - 它是 java.util.Calendar 类中的错误还是什么?

MySql 选择相对相似的日期

javascript - ECMAScript 规范中的 `ExpressionNoIn` 是什么意思?

javascript - for 语句中变量的总和返回 NaN

ios - 使用 NSString 作为键和值创建 JSON 格式

Java SimpleDateFormat ("yyyy-MM-dd' T'HH :mm:ss'Z'") gives timezone as IST