我有一天看起来像这样的“2013-10-29”
然后我有一个时间字符串,看起来像这个“9:00”
如果我使用片刻格式化这些并生成日期,我会因某种原因继续获得12个
new Date(moment(day + " " + start).format('YYYY-MM-DD h:m'));
Tue Oct 29 2013 12:00:00 GMT-0500(CDT)
如何使用时刻正确获取当地时间?
答案 0 :(得分:3)
您显示Date
对象,然后它的表示取决于浏览器。你在做什么:
Date
; moment()
对象
Date
格式化format()
,现在您有了想要的字符串。Date
; Date.toString()
浏览器相关实现将该日期转换回字符串。此字符串是您拥有的以及您需要的字符串:
moment(day + " " + start).format('YYYY-MM-DD h:m')
不将其解析回Date
对象(它甚至可能失败,您使用带有dateString
参数的构造函数:请参阅MDN) ,Date.toString()
将始终生成浏览器首选的格式。
答案 1 :(得分:1)
我认为你在寻找的是:
moment(day + " " + start, 'YYYY-MM-DD H:mm').toDate()
如果需要指定输入格式,则作为矩构造函数的参数。如果您使用format
方法,即输出格式来创建字符串。
但阿德里亚诺也提出了一些非常好的观点。除非将其传递给需要它的其他代码或控件,否则不应使用Date
对象。最终用户总是需要一个字符串进行显示。
至于为什么您的代码没有正确地占用时间,请考虑使用格式为h:m
的{{1}}。有些浏览器可能不会将其理解为有效时间。您应9:0
获取H:mm
。 (9:00
构造函数的解析是特定于实现的。)我还使用了大写Date
24小时制。如果您想坚持使用12小时制,那么您还应该包含格式为H
的am / pm指示符。