添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

获取两个时间数据,通常这两个时间是:后端给的时间数据和当前时间

let dateBegin = '2018/08/28 04:56:38'; // 初始时间
dateBegin = new Date(dateBegin);
// Mon Aug 28 2017 04:56:38 GMT+0800 (中国标准时间)
// 上面是Date对象的数据形式
let dateEnd = new Date(); // 第二个数据通常是当前时间

使用getTime()返回与固定的 1970 年 1 月 1 日的时间差,再用大的时间减去短的时间即可得出双方相差的毫秒数。

let dateDiff = dateEnd.getTime() - dateBegin.getTime();

换算成你想要的时间单位,得出两个时间的时间差。

// 计算出相差天数
let dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));

// 计算天数后剩余的毫秒数 利用这个时间去计算小时
let leave1 = dateDiff % (24 3600 1000);
// 计算出小时数
let hours = Math.floor(leave1 / (3600 1000));
// 计算相差分钟数
let leave2 = leave1 % (3600
1000); // 计算小时数后剩余的毫秒数
let minutes = Math.floor(leave2 / (60 1000)); // 计算相差分钟数
// 计算相差秒数
let leave3 = leave2 % (60
1000); // 计算分钟数后剩余的毫秒数
let seconds = Math.round(leave3 / 1000);

// 结果
console.log(相差</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>dayDiff<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">天</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>hours<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">小时</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>minutes<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">分钟</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>seconds<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">秒);

如果你只想计算相差的小时数,不想管天数:

let dayDiff = Math.floor(dateDiff / (3600 * 1000)); // 其他的同理,倍数正确即可

# 时区转换

拿到这么一串字符串:2018-09-17,要与当前的日期比较,求出日期差。

let time = `2018-09-17`;
let dateBegin = new Date(time);
let dateEnd = new Date(); // 这一秒的时间 需重新设置
dateEnd.setHours(0, 0, 0, 0);
// 计算时间差 参照上文

东八区的时间

上面new Date(time)之后拿到的是零时区 0 点的时间,在东八区也就是北京时间08:00:00

而我们第二个时间设置的是北京时间00:00:00,这里面就出现了八个小时的误差。

转换时区的三种方法

设置世界时为当前时区的时间:

设置具体的时间,传进new Date()的时候会自动转成北京时间00:00:00,然后两个时间就可以同步了。

let time = `2018-09-17`;
time = `${time} 00:00:00`; // 后面加上具体时间
let dateBegin = new Date(time);
let dateEnd = new Date(); // 这一秒的时间 需重新设置
dateEnd.setHours(0, 0, 0, 0);
// 计算时间差 参照上文

也可以使用setHours

let time = `2018-09-17`;
let dateBegin = new Date(time);
dateBegin.setHours(0, 0, 0, 0); // new Date()之后 设为0点 两个时间同步
let dateEnd = new Date(); // 这一秒的时间 需重新设置
dateEnd.setHours(0, 0, 0, 0);
// 计算时间差 参照上文

当前时区与世界时同步:

let time = `2018-09-17`;
let dateBegin = new Date(time);
let dateEnd = new Date(); // 这一秒的时间 需重新设置
dateEnd.setHours(8, 0, 0, 0); // 设置为八点与世界时一致
// 计算时间差 参照上文

你可能不知道当前时区与世界时相差多少

let time = `2018-09-17`;
let dateBegin = new Date(time);
let dateEnd = new Date(); // 这一秒的时间 需重新设置
dateEnd.setUTCHours(0, 0, 0, 0); // 设置为世界时的0点 也就是北京时间八点
// 计算时间差 参照上文

以上:2018.09.21

# 点个Star支持我一下~