【发布时间】:2021-12-12 14:45:44
【问题描述】:
在我的应用程序中,我使用时区选择作为用户偏好。在显示日期时,我将本地时间转换为用户首选时区。要转换我使用下面的方法
function convertSystemTimeToUserTimeZone(localDateTimeValue){
var userTimeZoneOffset = 3; //For example purpose
var newDate = new Date(localDateTimeValue.getTime() + (localDateTimeValue.getTimezoneOffset() * 60000) + (userTimeZoneOffset * 3600000));
return newDate;
}
例如。我正在将本地时区(即 IST)转换为用户首选时区,即 EST
这工作正常并将用户本地系统时间转换为他的用户首选时区。 (注意:只有日期时间值发生变化,但时区仍显示本地系统时区)
现在在将此日期发送到后端时,我需要将其转换为 GMT。我不知道如何将此返回的日期转换为 GMT,因为当我计算 GMT 转换时,它考虑的是本地系统时区 (IST) 而不是用户首选时区设置 (EST)。
我尝试了以下方法,但没有运气。
console.log(new Date(userTimeZoneDateTimeValue.getUTCFullYear(), userTimeZoneDateTimeValue.getUTCMonth(), userTimeZoneDateTimeValue.getUTCDate(), userTimeZoneDateTimeValue.getUTCHours(), userTimeZoneDateTimeValue.getUTCMinutes(), userTimeZoneDateTimeValue.getUTCSeconds()));
console.log(userTimeZoneDateTimeValue.toUTCString());
【问题讨论】:
-
ECMAScript Date 对象本质上都是 UTC,时区和偏移量只对显示很重要。
date.toLocaleString('default', {timeZone:'America/New_York', timeZoneName:'long'})应该可以完成这项工作。
标签: javascript datetime timezone momentjs