我正在尝试使用新的Date()来解析我通过ajax调用(现在与此无关)从php获取的日期字符串。
然而,我一直得到错误的结果。我的字符串是2013-05-09 20:56:17
当我做的时候
var something = new Date("2013-05-09 20:56:17");
alert(something.getMonth());
它一直警告0
在我看来,由于某种原因,新日期无法解析此字符串。
有没有办法在JS中指定新Date()的日期格式?
我目前的解决方案是导入php:date()
和strtotime()
并使用它们:
alert(date('m', strtotime("2013-05-09 20:56:17")));
但是我必须使用外部的js lib,我很确定有更好的JS方法来实现它。
答案 0 :(得分:1)
如果使用斜杠而不是连字符,则可以使用:
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
构造函数无法识别带有连字符的日期格式,或者至少不能识别该特定格式。
答案 1 :(得分:0)
在PHP中为ajax日期选择不同的格式说明符。您期望的格式和javascript预期的格式是不同的。
var something = new Date("2013-05-09T20:56:17");
注意'T'显示为文字分隔符并标记每个ISO 8601的开始时间
各种[浏览器] javascript日期格式的参考
最后,PHP日期格式说明符列表:
注意'DATE_ISO8601';但我建议不要在此时使用它。而是使用'DATE_ATOM',它可以产生更广泛支持的日期格式(评论表明它使iPhone变得更快乐,并且没有其他浏览器的问题)。
在PHP中使用它:
$something = new DateTime('NOW');
echo $something->format('c');
echo $something->format(DateTime::ATOM);