我正在使用时刻js转换此字符串20:00
我试过:
var a = moment("20:00", "HH:mm")
console.log(a.format()) // 2016-09-08T20:00:00+01:00
当我在mongodb中存储它时会出现问题
2016-09-10T19:00:00.000Z
我想存储2016-09-10T20:00:00.000Z
无论如何可以解释为什么请?
答案 0 :(得分:1)
当您说要存储2016-09-10T20:00:00.000Z
时,您想要假设您的日期和时间是UTC。
要假设您要解析的日期是UTC值,请使用moment.utc
var a = moment.utc("20:00", "HH:mm")
console.log(a.format()) // 2016-09-08T20:00:00Z
请注意,在解析没有日期的时间时,时刻会假定当前日期。这可能不是您想要的行为。
我也不确定您是否需要UTC日期(这就是您所说的)或没有偏移指示符的本地日期。如果您想要一个没有偏移指标的本地日期,只需使用没有偏移的格式:
moment.utc("20:00", "HH:mm").format('YYYY-MM-DDTHH:mm:ss.SSS')
"2016-09-08T20:00:00.000"
如果您正在处理没有时区关联的本地日期,我建议使用moment.utc
进行解析,因为这样可以确保时间不会转移到当前时区的DST帐户
有关如何将日期分析为您想要的时区或偏移的详细信息,请参阅my blog post on the subject。
答案 1 :(得分:0)
它应该如何看待:
var a = moment("20:00", "HH:mm")
console.log(a.utcOffset('+0000').format())

<script src="http://momentjs.com/downloads/moment.min.js"></script>
&#13;
Doe,问题是您在创建日期时使用时区。
MomentJS会自动使用您当前的时区。
然而,Mongo会节省时间,就像在另一个时区一样。
因此,如果您希望两个字符串格式相同,则需要设置时区。