即 Daylight Saving Time,每一年html
3月第2個星期日凌晨02:00安全
開始,到markdown
11月第1個星期日凌晨02:00oop
爲止。ui
夏令時開始後,時鐘會撥快一個小時,聽說其本意是讓人們早睡早起,以達到節約能源的目的 -- 早點睡就不用開燈了嘛。夏令時的另外一個功用,是讓人們在下班後,有足夠的時間與孩子們在戶外玩耍。春夏回暖,是戶外活動的好季節。調成夏令時後,即便是晚上8點,外頭仍舊有足夠的亮度,讓孩子們安全玩耍。spa
夏令時在11月才結束的緣由也是爲了兒童安全。10月31日是萬聖節,小孩子晚上會出去討糖果,由於是夏令時,晚上七、8點小孩子出去的時候,天色還夠亮,家長也放心些。code
每一年一次的「空白1小時」(2020-03-08)orm
兩點整 過了1秒以後是 三點零一分htm
當前時刻:02:00:00 PSTblog
當前時刻:03:00:00 PDT
當前時刻的下一秒:03:00:01 PDT
每一年一次的「重複1小時」(2020-11-01)
一點到兩點過完以後會再次通過一邊
01:00:00 DST -- 02:00:00 DST
01:00:00 PST -- 02:00:00 PST
描述:運營在配置排期的時候會選擇:年、月、日、時、分、秒(含義: 美國當地時間xxxx-xx-xx xx:xx:xx)
前提:
在須要咱們本身處理排期邏輯的狀況下(氛圍直出)
運營配置可視化,不要配置時間戳之類的
咱們不但願運營感知到夏令時的存在(歷史處理方式: 選擇 -800 或者 -700)
如何解決
首先假設配置的時刻是標準時,拿到時間戳
經過某些方法判斷時間戳表明的這一刻是不是夏令時
非夏令時:假設正確,不作任何處理
夏令時:假設不正確,還原1小時時差的時間戳
獲得正確的時間戳
var moment = require('moment-timezone');
// 夏令時開始時間(包含此時間點)【標準時 --> 夏令時】
function getDSTStartTimestamp(year) {
const str = `${year}-03-01 02:00:00 -800`;
const d = new Date(str);
const m = moment(d).tz("America/Los_Angeles");
let weekday = m.weekday();
if (weekday === 0) {
weekday = 7;
}
const offsetDay = 7 * 2 - weekday;
const timestamp = d.getTime() + offsetDay * 24 * 60 * 60 * 1000;
return timestamp;
}
// 夏令時結束時間(不包含此時間點)【夏令時 --> 標準時】
function getDSTEndTimestamp(year) {
const str = `${year}-11-01 02:00:00 -700`;
const d = new Date(str);
const m = moment(d).tz("America/Los_Angeles");
let weekday = m.weekday();
if (weekday === 0) {
weekday = 7;
}
const offsetDay = 7 - weekday;
const timestamp = d.getTime() + offsetDay * 24 * 60 * 60 * 1000;
return timestamp;
}
const s = getDSTStartTimestamp('2020');
const e = getDSTEndTimestamp('2020');
const startDate = moment(new Date(s)).tz("America/Los_Angeles");
const endDate = moment(new Date(e)).tz("America/Los_Angeles");
console.log('startDate', s, startDate, startDate.isDST());
// 夏令時開始時間:startDate 1583661600000 Moment<2020-03-08T03:00:00-07:00> true
console.log('endDate', e, endDate, endDate.isDST());
// 夏令時結束時間:endDate 1604221200000 Moment<2020-11-01T01:00:00-08:00> false
複製代碼
《美國時間時區及夏令時簡介》gonglue.us/8593
《UTC和GMT》:www.cnblogs.com/champyin/p/…