严格按照太平洋标准时间计算时间没有多大意义,因为太平洋时区几乎没有观察到太平洋标准时间。冬季观测太平洋标准时间 (UTC-8),夏季观测太平洋夏令时 (UTC-7)。您不能将太平洋时间仅表示为固定偏移量,除非它恰好是您自己的本地时区,否则如果没有时区数据库,您将无法轻松确定它们之间的转换。请参阅时区标签 wiki。
此外,date.js 已被放弃。我不能推荐任何继续使用的解决方案。对 Dancrumb 建议的方法的支持setTimezone
是特定于文化的,它仍然没有考虑夏令时。
相反,我建议尝试moment.js。您可以使用moment-timezone插件来处理该America/Los_Angeles
区域 - 这是美国太平洋时间的一个很好的例子。确保您的moment-timezone-data.js
文件至少包含此区域。然后您可以执行以下操作:
var m = moment().tz('America/Los_Angeles').day(7).startOf('day');
var s = m.toISOString(); // if you need a string output representing UTC
var dt = m.toDate(); // if you need an actual JavaScript Date object
让我们分解一下:
moment()
获取当前时间
tz('America/Los_Angeles')
将时间调整为您感兴趣的时区。
day(7)
将时间提前到下周一。
startOf('day')
将时间拉回到午夜。