moment.js时间处理类库--时间戳和时间格式相互转换nodejs引⼊moment
(1)安装
npm install moment
(2)引⼊
import moment from 'moment';
获取时间
1.获得当前时间
var now = moment()
2.获取时间戳(当前时间转时间戳)
moment().format('X') // (⼤写X)以秒为单位,返回值为字符串类型
moment().format('x') // (⼩写x)以毫秒为单位,返回值为字符串类型
moment().valueOf()  //  以毫秒为单位,返回值为数值型
3.获取其他的时间
moment().year()    //year可换为month,date(⼀个⽉的⼀天),day(⼀个星期的⼀天),hours,minutes,seconds
unix时间戳转换日期格式4.获取当前的年⽉⽇时分秒---数组或对象
moment().toArray() // [years, months, date, hours, minutes, seconds, milliseconds]
moment().toObject() // {years: xxxx, months: x, date: xx ...}
5.startOf()和endOf
moment().startOf('day')  //获取今天0时0分0秒
moment().startOf('week')  //获取本周第⼀天(周⽇)0时0分0秒
moment().startOf('isoWeek')  //获取本周周⼀0时0分0秒
moment().startOf('month')  //获取当前⽉第⼀天0时0分0秒
moment().endOf('day')  //获取今天23时59分59秒
moment().endOf('week')  //获取本周最后⼀天(周六)23时59分59秒
moment().endOf('isoWeek')  //获取本周周⽇23时59分59秒
moment().endOf('month')  获取当前⽉最后⼀天23时59分59秒
时间戳转换成时间
moment(时间戳).format("YYYY-MM-DD")  //输出实例如 2020-10-1
时间/时间戳格式化
moment().format('YYYY年MM⽉DD⽇')  //'xxxx年xx⽉xx⽇'
moment().format('YYYY-MM-DD HH:mm:ss')  //'xxxx-xx-xx xx:xx:xx'
moment().format('HH时mm分ss秒')  //24⼩时制 'xx时xx分xx秒'
moment().format('hh:mm:ss a')  // 12⼩时制'xx:xx:xx am/pm'
格式化参考表格
格式代码说明返回值例⼦
M数字表⽰的⽉份,没有前导零1到12
MM数字表⽰的⽉份,有前导零01到12
MMM三个字母缩写表⽰的⽉份Jan到Dec
MMMM⽉份,完整的⽂本格式January到December
Q季度1到4
D⽉份中的第⼏天,没有前导零1到31
DD⽉份中的第⼏天,有前导零01到31
d星期中的第⼏天,数字表⽰0到6,0表⽰周⽇,6表⽰周六
ddd三个字母表⽰星期中的第⼏天Sun到Sat
dddd星期⼏,完整的星期⽂本从Sunday到Saturday
w年份中的第⼏周如42:表⽰第42周
YYYY四位数字完整表⽰的年份如:2014 或 2000
YY两位数字表⽰的年份如:14 或 98
A⼤写的AM PM AM PM
a⼩写的am pm am pm
HH⼩时,24⼩时制,有前导零00到23
H⼩时,24⼩时制,⽆前导零0到23
hh⼩时,12⼩时制,有前导零00到12
h⼩时,12⼩时制,⽆前导零0到12
m没有前导零的分钟数0到59
mm有前导零的分钟数00到59
s没有前导零的秒数1到59
ss有前导零的描述01到59
X Unix时间戳1411572969
设置时间(获取想要的时间)
1.设置年⽉⽇-时分秒,以下year(-270000 -270000)可以更换成month(0-11)/date(1-31)/hours(0 -23)/minutes(0-59)/seconds(0-59)。如果超出范围,则它将会冒泡到上⼀级
//设置年份为2019
moment().year(2019)
moment().set('year', 2019)
2、设置星期⼏ --day(),weekday()
moment().day(Number|String);  //day()
moment().weekday(Number)  //weekday()
moment().day(-7); // 上个星期⽇ (0 - 7)
moment().weekday(-7); // 上个星期⼀
moment().day(0); // 这个星期⽇ (0)
moment().day(7); // 下个星期⽇ (0 + 7)
moment().day(10); // 下个星期三 (3 + 7)
moment().day(24); // 从现在起第 3 个星期三 (3 + 7 + 7 + 7)
day()和weekday()的区别:
day()规定星期⽇为 0、星期六为 6,weekday()会根据语⾔环境获设置星期⼏。如果语⾔环境将星期⼀指定为⼀周的第⼀天,则moment().weekday(0) 将会是星期⼀。 如果星期⽇是⼀周的第⼀天,则 moment().weekday(0) 将会是星期⽇。
3.在⽇期上加或者减
years可以更换成months/days/weeks/hours/minutes/seconds。如果超出范围,则它将会冒泡到上⼀级
moment().add(1, 'years')  //年份+1
moment().subtract(1, 'years')  //年份-1
⽇期加减的⼀些特殊情况
1.如果原始⽇期的⽉份中的⽇期⼤于最终⽉份中的天数,则该⽉份中的⽇期将会更改为最终⽉份中的最后⼀天。
moment([2010, 0, 31]);                  // ⼀⽉ 31 号
moment([2010, 0, 31]).add(1, 'months'); // ⼆⽉ 28 号
2.当为⽇期和⽉份传⼊⼩数时,它们会被四舍五⼊到最接近的整数。 星期、季度、年份会被转换到⽇期或⽉份,然后四舍五⼊到最接近的整数
moment().add(1.5, 'months') == moment().add(2, 'months')
moment().add(.7, 'years') == moment().add(8, 'months') //.7*12 = 8.4,取整到 8
总的⼀些使⽤
获取前天的⽇期
moment(new Date()).add(-2,'days').format('YYYYMMDD')
获取后天的⽇期
moment(new Date()).add(+2,'days').format('YYYYMMDD')
将  “Thu Jun 27 2019 15:11:32 GMT+0800 (中国标准时间)”这种格式转成时间戳
var d = moment(val).hours(23).minutes(59).seconds(59).valueOf()
再parseInt(d/1000);
获取某个⽇期当⽉的最后⼀天
moment(“2019-04-05”).endOf('month').format("YYYYMMDD")  ----》“20190430”