nodejs moment 修改时间格式 日期格式与时间戳格式互相转化

nvm use 8.3
> moment = require('moment')
> days = '2019-07-01'
'2019-07-01'
> moment().subtract(days, 'days').unix()
1563356732
>> var d = new Date(1563356732)
undefined
> d
1970-01-19T02:15:56.732Z

不使用moment 使用Date

nvm use 8.3
> var str = "Jan 19 2017 13:00:00";
> var t1 = new Date(str)
undefined
> t1
2017-01-19T05:00:00.000Z

> var t1 = t1.getTime();
undefined
> t1
1484802000000

需要注意两点:

第一,这里的str是按当地时间(localTime)计算的, 以中国为例,此处str表示北京时间(第8时区)2017年1月19日13时,亦即表示格林威治时间(第0时区)2017年1月19日05时。

第二,此处的str支持多种格式,例如以下两种写法得到的结果一致

var str1 = "2017-01-19 13:00:00";

var str2 = "Jan 19 2017 13:00:00";

var t1 = new Date(str1).getTime();

var t2 = new Date(str2).getTime();

得到当前时刻的时间戳

var t1 = Date.now();
var t2 = new Date().getTime();
> console.log(t1);
1563855892617
> console.log(t2);
1563855892619

日期之间的比较

将日期转换成时间戳后直接进行计算即可,举例计算两个日期之间的间隔是否大于一个星期:

var str1 = "2017-02-27 13:00:00";

var str2 = "2017-03-05 13:00:00";

var t1 = new Date(str1).getTime();

var t2 = new Date(str2).getTime();

if((t2-t1)>7*24*3600*1000) console.log('interval is greater than a week');