我想找到太平洋时间特定日期的特定时间(假设上午 9:30)的时间偏移,而我的程序可能正在其他一些区域设置中运行。这行不通:
const targetdate = '12/13/2025';
const target = new Date(targetdate);
target.setHours(9, 30); // won't work, uses local time zone
const timeDelta = target - new Date();
因为
setHours
使用当地时区而不是太平洋时区。
以下方法半年也不起作用:
const PST_offset = 7; // won't work if target date is DST
target.setUTCHours(9 + PST_offset, 30);
因为夏令时期间与 UTC 的偏移量不同。
我不知道该怎么做。有没有办法告诉 Node 使用 Pacific 作为其语言环境?我也知道
Intl.DateTimeFormat
,但这与显示日期和时间有关,而不是Date
数学。
您可以使用
toLocalString
和 Etc/GMT+8
来固定时区而不保存时间,然后设置小时和分钟:
const pstDate = new Date(
new Date(new Date('12/13/2025').toLocaleString('en-US', { timeZone: 'Etc/GMT+8' }))
);
pstDate.setHours(
new Date('12/13/2025').getHours() + 9,
new Date('12/13/2025').getMinutes() + 30
);
console.log(pstDate - new Date());
只要您知道目标时区(PDT、PST 等),您就可以在 Date 构造函数中指定时区:
let date = "13 Dec 2025"
let targetTime = "09:30:00 PDT"
let localMs = new Date( )
let targetMs = new Date( `${date} ${targetTime}` )
let diff = targetMs - localMs
console.log( `Diff : ${diff} ms` )
console.log( `Diff : ${diff / 1000} secs` )
console.log( `Diff : ${diff / 1000 / 60} mins` )
console.log( `Diff : ${diff / 1000 / 60 / 60} hours` )