转换小时到日期时间而不添加+1

时间:2016-09-08 15:06:46

标签: javascript mongodb momentjs

我正在使用时刻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

无论如何可以解释为什么请?

2 个答案:

答案 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;
&#13;
&#13;

Doe,问题是您在创建日期时使用时区。

MomentJS会自动使用您当前的时区。

然而,

Mongo会节省时间,就像在另一个时区一样。

因此,如果您希望两个字符串格式相同,则需要设置时区。