即 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/…