我在UTC中的SQLServer数据库中存储了一个值2016-07-28 16:00:00.000
:
我已将该UTC DateTime字符串转换为Javascript中的ISO字符串,然后将该值传递给片刻并在其上调用toDate()
。
但是值输出仍然是UTC,包括偏移量。
所以我逐步完成了两个作业的结果,并在每个阶段找到了以下值:
第一项任务:( UTC值4:15 pm表格DB转换为ISOString)
var isoDate = new Date('7/28/2016 4:15:00 PM').toISOString();
output value: "2016-07-28T15:15:00.000Z"
第二项任务:(输出为UTC加偏移,而不是预期的17:15本地)
var localOutageStart = moment.utc(isoDate).toDate();
output value: Thu Jul 28 2016 16:15:00 GMT+0100 (GMT Daylight Time)
相反,我想通过使用偏移量在本地输出值,因此它会在本地输出该值:
desired output value: 28 07 2016 17:15:00
如何输出本地时刻而不是UTC加偏移? 我将结果传递给Bootstrap datetime picker,我觉得这需要一会儿值。
答案 0 :(得分:2)
如果2016-07-28 16:00:00.000
是UTC格式,那么您需要将其视为UTC。作为ISO8601,它应该是2016-07-28T16:00:00.000Z
。你可以像这样得到这个:
var i = "2016-07-28 16:00:00.000";
var s = moment.utc(i).toISOString();
或者没有片刻,就像这样:
var i = "2016-07-28 16:00:00.000";
var s = new Date(i + " UTC").toISOString(); // yes, a non-standard hack, but works.
这会创建字符串:"2016-07-28T16:00:00.000Z"
然后当你想在客户端使用它时:
var i = "2016-07-28T16:00:00.000Z";
var m = moment(i); // here's a moment object you can use with your picker
var d = m.toDate(); // or, if you want a Date object
// or, if you want to custom format a string
var s = m.format("DD MM YYYY HH:mm:ss");
或者如果您想单独使用Date对象执行此操作:
var i = "2016-07-28T16:00:00.000Z";
var d = new Date(i);
(但是没有时刻自定义格式就更难了)