我正在尝试将用户的当地时间传递到我的后端。对
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()
的其他实例方法也存在同样的问题。
似乎将用户的本地时间传递到后端,同时保留时区信息,您应该使用
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);