2010-09-29 38 views
0
alert(Date.parse('Mar 1 1990')); 

在的jsfiddle,此返回datetime整数,如所预期。在我的机器上,它返回...时间戳字符串?Date.parse的不同行为?

Thu Mar 01 1990 00:00:00 GMT-0500 (EST) VS 636267600000

+1

你只是在这里指出的不同的行为,实际上不是问一个问题。 – Oded 2010-09-29 18:57:50

+0

当我在它的时候,Date.UTC会工作,除非当我尝试通过'date(ymd,$ var);'验证PHP的结果时,日期时间总是一个月... – 2010-09-29 18:58:17

+0

我的问题是......除了明显的事实,他们是不同的环境,为什么会有不同的行为?这是一个有点担心地认为某个地方在那里,客户端都被退回超过预期完全不同的结果... – 2010-09-29 18:59:14

回答

2

ECMAScript的语言规范

15.9.4.2 Date.parse(字符串)

分析函数应用 的ToString操作者它的参数和 解释结果字符串作为 日期和时间; 它返回一个数字, 对应 的日期和时间UTC时间值。该字符串可能 解释为本地时间,UTC的 时间,或在其他时间 区,一时间取决于 String的内容。该函数首先试图 根据 日期时间字符串格式(15.9.1.15)叫出来的规则解析字符串 的格式。 如果字符串不符合该格式,该函数可能会回退到 任何实现特定启发式 或实现特定日期 格式。无法识别字符串或 日期格式字符串应 原因Date.parse到返回NaN的不法分子 值

什么,你可能根本错误是,这两个试验是不一样的:

alert(Date.parse('Mar 1 1990'));返回一个数字(总是)

alert(new Date('Mar 1 1990'));返回你所提到的

字符串(因为toString方法被称为日期对象)

+0

+1我倾向于同意这两个测试必须以某种方式有所不同!然而'alert(Date('Mar 1 1990'));'实际上会输出_current date_,而不是提到的字符串。当Date()被作为函数调用时,任何参数都会被忽略,并返回当前日期/时间的字符串表示。但是,alert(new Date('Mar 1 1990'));'_will_返回所提到的字符串(取决于你所在的地区)。 – MrWhite 2010-09-29 21:11:34

+0

@ w3d是的,这是我想写的。这里有点晚了。感谢您指出。 – galambalazs 2010-09-29 21:17:06