【问题标题】:Converting a datetime into UTC with Javascript使用 Javascript 将日期时间转换为 UTC
【发布时间】:2014-06-13 01:51:14
【问题描述】:

好的,所以我正在编写一个 Titanium 应用程序,它可以消化 JSON 提要并将事件添加到用户日历中。我面临的问题是 JSON 提要将具有本地时间的数据时间(包括适当的夏令时),并且日历需要 UTC。

一个简化是事件总是在同一个位置(伦敦),所以唯一真正的问题是允许 DST (BST)。因此,如果我从提要中获得像 2014-04-27 19:00:00 这样的日期字符串,那么将其放入 UTC 中的 javascript 日期对象的最佳方法是什么(我认为,在这种情况下,它看起来像2014-04-27T18:00:00Z,但这一切都取决于一年中的时间)。

【问题讨论】:

标签: javascript date titanium utc dst


【解决方案1】:

如果您对引入库感到满意,MomentjsTimezone 插件可以做到这一点...

var input = '2014-04-27 19:00:00';
var eventDateInUtc = moment.tz(input, 'Europe/London').utc();
var output = eventDateInUtc.toDate().toISOString(); // '2014-04-27T18:00:00.000Z'

JSFiddle

【讨论】:

  • 给定目标是 Titanium 移动应用程序的开销。没有图书馆有没有办法做到这一点?
  • moment.js 已经是 Titanium 的一部分,只要您使用的是合金。使用var moment = require('alloy/moment'); 要求它我建议使用它,像moment.js 这样精心设计的库在日期/时间方面始终是首选。不要重新发明轮子;)
  • 很好的解决方案,但时刻时区也在 Titanium 中吗?当然,正如我在上面评论的那样,无法避免回退过渡的模棱两可。
  • moment-timezone 不是钛的一部分,因此该解决方案不起作用。
【解决方案2】:

试试这个希望对你有帮助

var newDate = new Date(); 
var newDateUTC = new Date(newDate.getUTCFullYear(), newDate.getUTCMonth(), newDate.getUTCDate(),  newDate.getUTCHours(), newDate.getUTCMinutes(), newDate.getUTCSeconds());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2016-06-17
    • 1970-01-01
    • 2022-11-14
    • 2011-01-06
    • 2021-10-06
    相关资源
    最近更新 更多