Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以UTC格式保存,并使用momentjs以当地时间显示_Javascript_Datetime_Momentjs - Fatal编程技术网

Javascript 以UTC格式保存,并使用momentjs以当地时间显示

Javascript 以UTC格式保存,并使用momentjs以当地时间显示,javascript,datetime,momentjs,Javascript,Datetime,Momentjs,我有一个表单,用户可以在其中保存计划日期。我希望能够将日期以utc格式发送到我的backedn。我有点像: <input type="hidden" name="scheduled_publication[publication_date]" value="2015/11/27"> <input type="hidden" name="scheduled_publication[time]" value="13:00"> 为什么不在第一个命令上应用本地命令?当我这样做的

我有一个表单,用户可以在其中保存计划日期。我希望能够将日期以utc格式发送到我的backedn。我有点像:

<input type="hidden" name="scheduled_publication[publication_date]" value="2015/11/27">
<input type="hidden" name="scheduled_publication[time]" value="13:00">
为什么不在第一个命令上应用本地命令?当我这样做的时候

> moment('2015-11-16 16:47:29 +0100')
Moment {_isAMomentObject: true, _i: "2015-11-16 16:47:29 +0100", _isUTC: false, _locale: Locale, _d: Mon Nov 16 2015 16:47:29 GMT+0100 (CET)…}
时区似乎已被确认

当你在工作结束时,很难保持一致性

编辑:

带着评论和回答。首先,使用pickadate插入的数据和使用EST插入的pickatime作为计算机时间,我设置值(11月20日23小时)并转换它们

> var date = $("[name='scheduled_publication[publication_date]']").val()
> var time = $("[name='scheduled_publication[time]']").val()
> $("[name='scheduled_publication[time]']").val(moment(date + ' ' + time).toISOString())

[<input type=​"hidden" name=​"scheduled_publication[time]​" value=​"2015-11-18T14:​00:​00.000Z">​]
>var date=$(“[name='scheduled_publication[publication_date]']”)val()
>var time=$(“[name='scheduled_publication[time]']”)val()
>$(“[name='scheduled_publication[time]']]”.val(矩(date+''+time).toISOString())
[​]
除了这个非常难看的javascript。它对我来说很好。返回的值是UTC。非常适合我的数据库。

尝试在后端存储日期:

moment().date(23).month('August').year(2015).hour(15).minute(45).second(0).millisecond(0).toISOString();
// output: 2015-08-23T10:15:00.000Z

请注意,时区信息已被删除(
Z
表示其在)。现在,将其显示回:

moment('2015-08-23T10:15:00.000Z').toString(); 
// output: Sun Aug 23 2015 15:45:00 GMT+0230
你看?
GMT+0230
自动到达那里,因为那是当前机器的偏移量

格式化显示:

moment('2015-08-23T10:15:00.000Z').format('dddd, MMMM Do YYYY h:mma');
// output: Sunday, August 23rd 2015 3:45pm

以UTC格式保存并返回(从unix epoch开始的毫秒数即可)。这只是在客户端上显示本地时区(客户端计算机的),自动用于调整UTC日期。您不必自己处理时区,除非是在非常特殊的情况下。感谢您的回答。因此,对于显示,它是可以的。我只需要根据用户插入的内容创建正确的UTC时间。您必须知道用户输入的模式或部分。请参阅answer.hi@s-d谢谢您的回答。我用
.toISOString();
的技巧编辑了我的问题,这是一个很好的方法。如果我能给你反馈我所做的。
moment('2015-08-23T10:15:00.000Z').toString(); 
// output: Sun Aug 23 2015 15:45:00 GMT+0230
moment('2015-08-23T10:15:00.000Z').format('dddd, MMMM Do YYYY h:mma');
// output: Sunday, August 23rd 2015 3:45pm