尝试使用new date()解析日期.但总是得到错误的结果

Trying to parse date using new Date(). but keep getting wrong results

本文关键字:结果 错误 日期 new date      更新时间:2023-09-26

我试图解析一个日期字符串,我从php通过ajax调用(这是不相关的现在)使用新的日期()。

然而我总是得到错误的结果。

字符串是2013-05-09 20:56:17

当我做

var something = new Date("2013-05-09 20:56:17");
alert(something.getMonth());

一直提醒0

在我看来,由于某些原因,新的日期不能解析这个字符串。

是否有一种方法可以在JS中为new date()指定日期格式?

我目前的解决方案是导入php的:date()strtotime()并使用它们:

alert(date('m', strtotime("2013-05-09 20:56:17")));

这工作,但我必须使用外部js库,我很确定有一个更好的js方法来实现这一点。

如果你使用斜杠而不是连字符,它可以工作:

var something = new Date("2013/05/09 20:56:17");
alert(something.getMonth());

如果你需要(比如,如果你从其他地方获得日期字符串),可以很容易地先用斜杠替换字符串中的连字符:

var something = new Date("2013-05-09 20:56:17");
something = something.replace('-', '/');

似乎JavaScript的Date构造函数不识别带有连字符的日期格式,或者至少不识别特定的格式。

在PHP中为ajax日期选择不同的格式说明符。您期望的格式和javascript期望的格式是不同的。

var something = new Date("2013-05-09T20:56:17");

请注意'T'作为文字分隔符出现,并标记ISO 8601

的时间开始。

各种[browser] javascript日期格式参考

  • W3 DateTime
  • Microsoft IE日期时间
  • Mozilla [Firefox] DateTime
  • 谷歌DateJs
最后,PHP日期格式说明符列表:
    PHP日期
  • PHP DateTime

注意'DATE_ISO8601';但我建议现在不要用这个。相反,使用'DATE_ATOM'可能会产生更广泛支持的日期格式(评论表明它使iphone更快乐,并且与其他浏览器没有问题)。

在PHP中使用

$something = new DateTime('NOW');
echo $something->format('c');
echo $something->format(DateTime::ATOM);