使用 new Date().getTimezoneOffset() 将 java 日历日期转换为 javascript 日期

danda

我有一个发送到服务器的日历数据,它包含以下字段-

export interface CalendarDate{
    dayOfMonth: number;
    hourOfDay: number;
    minute: number;
    month: number;
    second: number;
    year: number;
}

我想参考时间偏移计算将其转换为javascript Date,我在这方面阅读了很多帖子,这样做是否正确?它适用于所有情况吗?

 return new Date(modificationDate.year, modificationDate.month, modificationDate.dayOfMonth,
                modificationDate.hourOfDay, modificationDate.minute -new Date().getTimezoneOffset(), modificationDate.second);
罗布

您似乎正在做的是使用 UTC 值作为本地值,因此您必须使用时区偏移量才能回到正确的时间。

不,它不会在所有情况下都有效,因为您正在获取函数运行时的时区偏移量,而不是解析日期的时区偏移量。在时区偏移已通过政府法规或立法或夏令时更改的地方,这可能会有所不同。例如,莱恩群岛最近从 -12 变为 +14。

所以假设你得到的数据是 UTC,你可以使用 Date.UTC 来获取正确的日期和时间:

// data for 2018-01-01T12:00:00Z
var data = {
    dayOfMonth: 1,
    hourOfDay: 12,
    minute: 0,
    month: 0,
    second: 0,
    year: 2018
};

// Current function, uses current timezone offset regardless of date
function toDate(data) {
  return new Date(
    data.year, data.month, data.dayOfMonth, data.hourOfDay,
    data.minute - new Date().getTimezoneOffset(), data.second);
}

// Better function, pure UTC
function toDateNew(data) {
  return new Date(Date.UTC(
    data.year, data.month, data.dayOfMonth, data.hourOfDay,
    data.minute, data.second));
}

console.log('Existing: ' + toDate(data).toISOString() + 
          '\nor      : ' + toDate(data).toString() + 
          '\nNew func: ' + toDateNew(data).toISOString() +
          '\nor      : ' + toDateNew(data).toString()
);

所以现在这些值被解析为 UTC,将日期的时间值设置为正确的值。当您显示日期时,将使用本地值,该值将根据主机系统设置调整日期的时区偏移。你不必做任何事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将Json日期转换为Java日历

如何使用Java 8 Date / Time API将公历日期转换为儒略日期?

如何使用 java 将 4 位儒略日期(yDDD)转换为日历日期格式,如 MM/dd/yyy?

使用javascript将数字转换为日期

使用Gson将Javascript / Json日期字符串转换为Java日期

使用javascript将SQL日期数字转换为日期

使用基准日期将日历日期转换为儒略日期

使用Javascript将DynamodB日期格式字符串转换为Date格式

当我尝试将String转换为Date时,它使用Javascript返回今天的日期吗?

Javascript Date():如何将本地日期转换为GMT

将JSON“ / Date(1404860400000)/”转换为javascript日期

将Json日期转换为Java日期

将Javascript日期对象转换为Java LocalDateTime

使用date-fns将new Date()。toString()返回的字符串转换回日期

如何使用Javascript将毫秒转换为可读日期?

使用javascript将UTC转换为标准日期时间格式

如何使用 parse_date_time() 将日期变量转换为不同的日期时间变量?

使用Java将日期数字转换为单词

使用 new Date() Javascript 生成錯誤的日期

在javascript中使用new Date()时得到错误的日期

将Javascript日期从日期值转换为日期obj

将日历日期转换为yyyy-MM-dd格式的Java

将儒略日期转换为日历日期

将日历日期转换为朱利安日期-Python

将日期从回历/伊斯兰日历转换为格鲁吉亚日历

将字符串转换为日历-日历日期错误

使用Javascript将字符串(日期格式)转换为日期时间

使用Javascript将数据库日期转换为短日期

使用Javascript将MySQL日期格式转换为DD / MM / YY日期格式