在 Javascript 中调用 `Date().toString()` 时维护来自 `Date()` 的时区信息

问题描述 投票:0回答:1

我正在尝试将用户的当地时间传递到我的后端。对

Date()
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) 实例的任何调用似乎都会丢失时区信息,从而阻止我确定用户的时区信息当地时间。

console.log('Local Time:', new Date().toString());
console.log('Local Time:', new Date());

输出:

Local Time: Wed Jan 08 2025 03:48:49 GMT (Coordinated Universal Time)
Local Time: Tue Jan 07 2025 22:48:49 GMT-0500 (Eastern Standard Time)

我发现

Date()
的其他实例方法也存在同样的问题。

javascript date datetime
1个回答
0
投票

似乎将用户的本地时间传递到后端,同时保留时区信息,您应该使用

toISOString()
对象的
Date
方法,它将日期转换为 ISO 8601 格式的字符串。 此外,您可以单独发送时区偏移量。

const localTime = new Date();

// timezone offset then convert it to hours and minutes
const timezoneOffset = -localTime.getTimezoneOffset();
const offsetHours = Math.floor(timezoneOffset / 60);
const offsetMinutes = timezoneOffset % 60;

// timezone offset as a string
const formattedOffset = `${offsetHours >= 0 ? '+' : '-'}${String(Math.abs(offsetHours)).padStart(2, '0')}:${String(Math.abs(offsetMinutes)).padStart(2, '0')}`;

你可以检查

console.log('Local Time:', localTime.toISOString());
console.log('Timezone Offset:', formattedOffset);
© www.soinside.com 2019 - 2024. All rights reserved.