我有一个表格,可以使用该表格保存日程安排日期。我希望能够将我的发送日期转换为utc格式。我有类似:以UTC保存并在当地时间显示当前时间
<input type="hidden" name="scheduled_publication[publication_date]" value="2015/11/27">
<input type="hidden" name="scheduled_publication[time]" value="13:00">
但问题是,如果我改变与浏览器的时区这个值的偏移量,我也有时更改日期值。凌晨01点的时间表和-02:00时间偏移量将改变日期。 最简单的情况是获取两个当前值并用momentjs处理它们吗?
其他问题。如何使用momentjs以正确的时区显示时间。原始日期呈现如下:2015-11-16 16:47:29 +0100
。我尝试使用.utc
method。
> moment('2015-11-16 16:47:29 +0100').format("dddd, MMMM Do YYYY ha")
"Monday, November 16th 2015 4pm"
> moment.utc('2015-11-16 16:47:29 +0100').format("dddd, MMMM Do YYYY ha")
"Monday, November 16th 2015 4pm" #should be 3pm
为什么本地不适用于第一个命令?当我做
> 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和pickatime作为计算机时间的EST,然后将值(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">]
除了这个相当丑陋的JavaScript。这对我来说似乎很好。值的返回值是UTC。适合我的数据库。
保存并在UTC格式返回(毫秒自Unix纪元会做)。它只是在客户端上显示本地时区(客户端机器)时,会自动用于调整UTC日期。您不必自己处理时区,除非特殊情况。 –
感谢您的回答。所以为了显示,没关系。我只需要设法从用户插入的内容创建正确的utc时间。 – Mio
您将不得不知道用户输入的模式或部分。见答案。 –