【问题标题】:date time format adds one more hour日期时间格式增加一小时
【发布时间】:2015-03-21 19:18:01
【问题描述】:

我正在从数据库表中加载一个日期时间列 - 值是 2015-03-04 21:00:00 UTC

当我尝试将此格式转换为datetime picker 时,如下所示:

date = moment($("#event_start").val()); // date time value from database
$("#event_start").val(date.format('YYYY-MM-DD HH:mm')); // formatting the date time
$("#event_start").datetimepicker(); // "run" it as datetimepicker

但是,在datetimepicker 字段2015-03-04 21:00 中没有期望输出,而是2015-03-04 22:00

为什么要增加一小时?如何摆脱它并显示正确的时间?

提前谢谢你。

【问题讨论】:

  • 您目前是否位于西欧的夏令时国家? (编辑)还是在中欧?我怀疑 Moment 正确解释了“UTC”,并且您目前比 UTC 早一小时。
  • 我在德国 - 所以是的,我在。但是有没有办法“忽略”它?因为当我创建一个事件时,我设置了它的开始,将它保存到数据库中,一切都应该是这样的。
  • 我不确定你会如何使用 Moment。本机 JavaScript Date 对象具有用于获取部分日期作为 UTC 值而不是本地值的 API,但我不知道您如何告诉 Momemt 的 .format() 将日期格式化为 UTC。
  • $("#event_start").val()exact 字符串值是多少? “适当的时间”是什么意思。您希望结果是 UTC 还是本地时区?
  • 请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!

标签: javascript jquery datetime datetimepicker momentjs


【解决方案1】:

你试过.utc()吗?

$("#event_start").val(date.utc().format('YYYY-MM-DD HH:mm'));

Demo

【讨论】:

  • .utc() 会将时刻转换为UTC,在它已经被解释为本地时间之后。这可能不是 OP 想要的。
  • 我不同意,听起来这正是 OP 正在寻找的东西......我引用了他上面的评论:“我不知道你会如何告诉 Momemt 的 .format()将日期格式化为 UTC。"
  • 这在很大程度上取决于他对我在 OP cmets 中提出的问题的回答。如果字符串以ZUTC+00:00 结尾,那么您的代码将有效。如果不是,他可能应该使用moment.utc(thestring) 而不是moment(thestring).utc() 来解析它。
  • 字符串确实以UTC 结尾。同样,来自 OP 的原始帖子:“值是 2015-03-04 21:00:00 UTC”。
  • 他说那是数据库中的值。我不确定这是发送到时刻的确切字符串表示形式。
猜你喜欢
  • 2022-11-03
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多