首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将本地时间转换为utc,并添加到utc日期时间矩

将本地时间转换为utc,并添加到utc日期时间矩
EN

Stack Overflow用户
提问于 2018-03-12 23:54:52
回答 2查看 6.3K关注 0票数 0

我有一个用户输入,用户输入年份、月份和日期,并创建一个日期对象。

代码语言:javascript
复制
  let userDate = new Date(year, month, day)

然后从用户输入中输入分钟和小时(进入变量分钟和小时)。

我需要将这个日期和时间转换为UTC时间戳,使用时间,但我不确定。我能不能

代码语言:javascript
复制
  let utcTimestamp = moment.utc(date.toISOString()).hour(hours).minutes(minutes);

例如:如果用户输入的日期为13-3月-2018,时间为上午8:45 (在GMT时区),那么我可以使用上面的代码行获得UTC时间戳,因为我可以直接将小时和分钟添加到该日期。

如果用户输入的日期为13-8月-2018年8月-2018年和时间8:45 (即GMT +1,由于夏时制的变化),那么使用上面的行,我可能创建了一个错误的日期。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-13 17:04:41

..。我创建一个日期对象。 设userDate =新日期(年、月、日)

这里要小心,您需要从月份中减去1,因为它们被Date编号为0-11,而不是通常的1-12。

然后从用户输入中输入分钟和小时(进入变量分钟和小时)。

我需要把这个日期和时间转换成世界协调时的时间戳.

你不需要时间来做这个。只需在.toISOString()对象上调用Date即可。它在生成字符串之前隐式转换为UTC。

代码语言:javascript
复制
var utcString = new Date(year, month-1, day, hours, minutes).toISOString();

..。我能不能 设utcTimestamp =utcTimestamp

不,这没有道理。只有在在本地时间输入日期,但在UTC中输入时间时,才能执行此操作。这种行为上的差异肯定会让您的用户感到困惑--特别是如果UTC日期与本地日期不同的话。

..。如果用户输入的日期为13-8月-2018年8月-2018年和时间8:45 (即GMT +1,由于夏时制的变化),那么使用上面的行,我可能创建了一个错误的日期。

从当地时间到世界协调时的转换将自动考虑到当地时区所观察到的任何夏时制调整。您不需要自己做任何额外的调整。

票数 3
EN

Stack Overflow用户

发布于 2018-11-01 15:47:02

这是我用来将outlook日历事件从UTC转换为本地时间的片段。同样的技术也可以用于其他场景。

代码语言:javascript
复制
//Get the users timezone
let timeZone = item.originalStartTimeZone;

//Get the start datetime in UTC time
let timeStart = item.start.dateTime;

//Calculate the negative offset. 
let offset = - timeStart.localeCompare(timeZone);

//Add the calculated offset to the UTC start time 
let localStartTime = addHours(timeStart, offset);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49246203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档