我有一个用户输入,用户输入年份、月份和日期,并创建一个日期对象。
let userDate = new Date(year, month, day)然后从用户输入中输入分钟和小时(进入变量分钟和小时)。
我需要将这个日期和时间转换为UTC时间戳,使用时间,但我不确定。我能不能
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,由于夏时制的变化),那么使用上面的行,我可能创建了一个错误的日期。
发布于 2018-03-13 17:04:41
..。我创建一个日期对象。 设userDate =新日期(年、月、日)
这里要小心,您需要从月份中减去1,因为它们被Date编号为0-11,而不是通常的1-12。
然后从用户输入中输入分钟和小时(进入变量分钟和小时)。
我需要把这个日期和时间转换成世界协调时的时间戳.
你不需要时间来做这个。只需在.toISOString()对象上调用Date即可。它在生成字符串之前隐式转换为UTC。
var utcString = new Date(year, month-1, day, hours, minutes).toISOString();..。我能不能 设utcTimestamp =utcTimestamp
不,这没有道理。只有在在本地时间输入日期,但在UTC中输入时间时,才能执行此操作。这种行为上的差异肯定会让您的用户感到困惑--特别是如果UTC日期与本地日期不同的话。
..。如果用户输入的日期为13-8月-2018年8月-2018年和时间8:45 (即GMT +1,由于夏时制的变化),那么使用上面的行,我可能创建了一个错误的日期。
从当地时间到世界协调时的转换将自动考虑到当地时区所观察到的任何夏时制调整。您不需要自己做任何额外的调整。
发布于 2018-11-01 15:47:02
这是我用来将outlook日历事件从UTC转换为本地时间的片段。同样的技术也可以用于其他场景。
//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);https://stackoverflow.com/questions/49246203
复制相似问题