在IE 11中格式化日期

时间:2017-02-10 17:51:22

标签: javascript date momentjs date-formatting

我们正在尝试在电子商务JavaScript应用程序中格式化日期。 我们尝试将“00:00:00”附加到日期String。 但是在IE 11中,使用该字符串我们会收到无效日期错误。

所以我们尝试了一些其他选项,但是我们得到的日期对象是意料之外的:

1. new Date(2017, 02, 10, 00, 00, 00, 000) -->
   Fri Mar 10 2017 00:00:00 GMT-0800 (Pacific Standard Time)

2. new Date("2017-02-10T00:00:00.000Z") -->
   Thu Feb 09 2017 16:00:00 GMT-0800 (Pacific Standard Time)

唯一有效的方法是使用“moment.js”来解决这些问题。

谢谢和问候

1 个答案:

答案 0 :(得分:1)

目前还不清楚您是否要求创建日期或将其格式化为字符串。但这里没有什么意外的。

new Date(2017, 02, 10, 00, 00, 00, 000)

您不应在数字上使用前导零。在旧版浏览器的某些情况下,它可以指示八进制而不是十进制。无论如何,上面会产生一个"本地" 2017年3月10日00:00:00的日期,具体取决于主机系统时区设置。您的似乎设置为UTC-08:00。

假设:

new Date("2017-02-10T00:00:00.000Z")

你要求Date构造函数解析一个字符串,这是一个非常糟糕的东西。但是,早于IE 8的浏览器应该正确解析并生成2017年3月10日00:00:00 UTC的日期,其时区偏移量为00:00。

由于您的时区是-08:00,当您将其写入输出时,将根据主机时区(即本地)调整值,因此您会看到2017年3月9日16:00:00(或下午4点)的日期)。

请注意,使用内置的 Date.prototype.toString 将导致实现相关的字符串在每个主机中可能不同。如果您需要有关格式化日期的信息,请参阅Where can I find documentation on formatting a date in JavaScript?How to format a JavaScript date

  

唯一有效的方法是使用" moment.js"解决这些问题。

目前还不清楚您尝试解决的问题,但是好的,轻量级的解析和格式化库fecha.js。如果您还想进行算术运算,可能会发现moment.js合适。但编写一个函数来解析特定格式或创建合适的字符串并不困难,请参阅上面的链接。

相关问题