我有一个表单,用户可以保存计划日期。我希望能够将我的日期发送到utc格式。我有类似的东西:
2015-11-16 16:47:29 +0100
但问题是如果我用浏览器时区偏移更改此值,我还有时会更改日期值。上午01点的时间表和-02:00的时间偏移将改变日期。 最简单的方案是获取两个当前值并使用momentjs处理它们吗?
其他问题。如何使用momentjs显示具有正确时区的时间。呈现的原始日期如下所示:> 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
。我尝试使用.utc
method。
> 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)…}
为什么本地不适用于第一个命令?当我做的时候
> 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">]
时区似乎得到了认可。
当你最后一次工作时很难保持健康。
编辑:
随着评论和回答。首先使用带有EST作为计算机时间的pickadate和pickatime数据插入,我设置值(11月20日23小时)并转换它们。
selected-item
除了这个非常难看的javascript。这对我来说似乎不错。值返回为UTC。适合我的数据库。
答案 0 :(得分:2)
尝试使用ISO date在后端存储日期:
moment().date(23).month('August').year(2015).hour(15).minute(45).second(0).millisecond(0).toISOString();
// output: 2015-08-23T10:15:00.000Z
或
moment('23 aug 2015, 3:45pm', 'DD MMM yyyy, hh:mma').toISOString();
// output: 2015-08-23T10:15:00.000Z
请注意,时区信息已被删除(Z
表示其位于UTC)。现在,将其显示回来:
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