2017-02-10 28 views
-1

我们正试图在电子商务JavaScript应用程序中格式化日期。 我们尝试在日期字符串中使用追加“00:00:00”。 但在IE 11中,使用该字符串我们得到了无效日期错误。IE 11中的格式化日期

因此,我们尝试了一些更多的选择,但我们所得到的Date对象是意外:

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”来解决这些问题。

感谢和问候

+2

日期是您不格式化日期的日期;你格式化一个字符串。你能分享一下你想要约会的“字符串”格式吗?或者你想要的是从你的约会时间减少的时间? – Dalorzo

+0

请在这里找到详细信息:https://jsfiddle.net/vhLqtu35/17/ – kallada

+1

“*唯一有效的方法是使用”moment.js“来解决这些问题。*”不。图书馆可以帮助但是不是必需的。可能是[*在哪里可以找到有关在JavaScript中格式化日期的文档?]的副本(http://stackoverflow.com/questions/1056728/where-can-i-find-documentation-on-formatting-a-date -in-javascript?s = 1 | 6.7038)或[*如何格式化JavaScript日期*](http://stackoverflow.com/questions/3552461/how-to-format-a-javascript-date?s = 2 | 5.7726)。 – RobG

回答

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日UTC时间00:00:00的日期,该日期的时区偏移量为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合适。但编写函数来解析特定格式或创建合适的字符串并不困难,请参阅上述链接。