1. 问题:给定一个时间的value:1541059860000,把它转换为东八区的显示格式
let a = moment(1541059860000).subtract(moment().utcOffset(), 'minute').add(480, 'minute').format('YYYY-MM-DD HH:mm');
let b = moment(1541059860000).utcOffset(480).format('YYYY-MM-DD HH:mm');
console.log(a,b)
复制代码
.utcOffset(480)转换为东八区格式,但是
.utcOffset()//获取的永远是localTime的offset,不管前面的参数是有没有时区
.utcOffset(120)//转换为指定的时区格式,前面的字符串参数的时区是有意义的
console.log(moment('2018-10-06T19:21:00.000+0000').utcOffset(60).format('YYYY-MM-DD HH:mm:ssZ'))//转换为UTC+1时区
console.log(moment('2018-10-06T19:21:00.000+0200').utcOffset(60).format('YYYY-MM-DD HH:mm:ssZ'))//转换为UTC+1时区
console.log(moment('2018-10-06T19:21:00Z').utcOffset())
console.log(moment().utcOffset())//获取localTime的offset
console.log(moment('2018-10-06T19:21:00.000+0200').utcOffset())//获取的还是localTime的offset,前面参数的时区没有意义
复制代码
Unix时间戳
是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
- UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z.
- 一个小时表示为UNIX时间戳格式为:3600秒;
- 一天表示为UNIX时间戳为86400秒,闰秒不计算。
- 在大多数的UNIX系统中UNIX时间戳存储为32位,这样会引发2038年问题或Y2038。
en.wikipedia.org/wiki/ISO_86… en.wikipedia.org/wiki/ISO_we…
2. JavaScript获取时间戳与时间戳转化
Javascript 获取当前时间戳(毫秒级别):
第一种方法:
var timestamp1 = Date.parse( new Date());
复制代码
结果:1542264864020
第二种方法:
var timestamp2 = ( new Date()).valueOf();
复制代码
结果:1542264864020
第三种方法:
var timestamp3 = new Date().getTime();
复制代码
结果:1542264864020
第一种获取的时间戳是精确到秒,第二种和第三种是获取的时间戳精确到毫秒。
获取指定时间的时间戳:
// 将指定的时间字符串放入参数位置,如下:
new Date("2016-08-03 00:00:00");
复制代码
时间戳转化成时间:
function timetrans(date){
var date = new Date(date*1000);//如果date为13位不需要乘1000
var Y = date.getFullYear() + '-';
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
var m = (date.getMinutes() <10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
var s = (date.getSeconds() <10 ? '0' + date.getSeconds() : date.getSeconds());
return Y+M+D+h+m+s;
}
复制代码