妈妈再也不用担心我使用moment了

1,077 阅读4分钟
前言

日常开发中,我们经常会涉及到时间控件这个东西,这时候为了得到我们想要的时间格式,我们就会去对数据进行各种处理以便于得到我们想要的格式。下面记录一下常用的处理时间的方式(基于moment.js)。

Date对象
const date = new Date()  // Date 对象会自动把当前日期和时间保存为其初始值。

date.valueOf() => 1617331224910

date(1617331224910) => Fri Apr 02 2021 10:40:24 GMT+0800 (中国标准时间)
关于moment.js

我们日常开发中更多使用到moment这个库来处理时间格式,下面记录下常用moment方法

  1. 获取当前时间对象
 // 等同于moment(new Date()) || moment([]) || moment({}) || moment(undefined) 注:null不行
 const date = moment()
  1. 获取时间戳--转换时间戳为时间对象
1.获取时间戳(以秒为单位)
moment().format('X') // 返回值为字符串类型
moment().unix() // 返回值为数值型

moment.unix(Number) // 转换时间戳为时间对象---秒

2.获取时间戳(以毫秒为单位)
moment().format('x') // 返回值为字符串类型
moment().valueOf() // 返回值为数值型
+moment() // 返回值为数值型

moment(Number) // 转换时间戳为时间对象---毫秒
  1. 获取时间(一天的开始和结束)
1.获取今天000moment().startOf('day')

2.获取本周第一天(周日)000moment().startOf('week')

3.获取当前月第一天000moment().startOf('month')

4.获取今天235959moment().endOf('day')

5.获取本周最后一天(周六)235959moment().endOf('week')

6.获取当前月最后一天235959moment().endOf('month')
  1. 获取当前月的总天数
moment().daysInMonth() 
  1. 获取时间 设置时间
moment().get('year');
moment().get('month');  // 0 至 11
moment().get('date');
moment().get('hour');
moment().get('minute');
moment().get('second');
moment().get('millisecond');
moment().set('year', 2013);
moment().set('month', 3);  // 四月
moment().set('date', 1);
moment().set('hour', 13);
moment().set('minute', 20);
moment().set('second', 30);
moment().set('millisecond', 123);

moment().set({'year': 2013, 'month': 3});
  1. 增加、减少时间改变原始moment

增加方法add 减少subtract 两者使用方法一样

1.设置年
moment().add(1, 'years')
moment().add({years: 1})
2.设置月
moment().add(1, 'months')
3.设置日期
moment().add(1, 'days')
4.设置星期
moment().add(1, 'weeks')
5.设置小时
moment().add(1, 'hours')
6.设置分钟
moment().add(1, 'minutes')
7.设置秒数
moment().add(1, 'seconds')
  1. 格式化时间
1.格式化年月日: 'xxxx年xx月xx日'
moment().format('YYYY年MM月DD日')

2.格式化年月日: 'xxxx-xx-xx'
moment().format('YYYY-MM-DD')

3.格式化时分秒(24小时制): 'xx时xx分xx秒'
moment().format('HH时mm分ss秒')

4.格式化时分秒(12小时制):'xx:xx:xx am/pm'
moment().format('hh:mm:ss a')

5.格式化时间戳(以秒为单位)
moment().format('X') // 返回值为字符串类型

6.格式化时间戳(以毫秒为单位)
moment().format('x') // 返回值为字符串类型
  1. 获取两个日期之间的时间差
let start = moment().subtract(1, 'weeks')
let end = moment()

end.diff(start) // 返回毫秒数

end.diff(start, 'months') // 0
end.diff(start, 'weeks') // 1
end.diff(start, 'days') // 7
start.diff(end, 'days') // -7
  1. 判断时间是否在另一个时间之前或之后或相同

isBefore :检查一个 moment 是否在另一个 moment 之前

isSame:检查一个 moment 是否与另一个 moment 相同

isAfter :检查一个 moment 是否在另一个 moment 之后

isSameOrBefore:检查一个 moment 是否在另一个 moment 之前或与之相同

isSameOrAfter:检查一个 moment 是否在另一个 moment 之后或与之相同

moment().isBefore(Moment|String|Number|Date|Array);
moment().isBefore(Moment|String|Number|Date|Array, String);

moment('2010-10-20').isBefore('2010-10-21'); // true
// 第二个参数用于确定精度,且不仅仅是要检查的单个值,因此使用 day 将会检查年份、月份、日期
moment('2010-10-20').isBefore('2010-12-31', 'year'); // false
moment('2010-10-20').isBefore('2011-01-01', 'year'); // true

isBetween:检查一个 moment 是否在其他两个 moment 之间

moment().isBetween(moment-like, moment-like, String, String);

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
// 如果要将粒度限制为毫秒以外的单位,则将单位作为第三个参数传入。
moment('2010-10-20').isBetween('2010-01-01', '2012-01-01', 'year'); // false
moment('2010-10-20').isBetween('2009-12-31', '2012-01-01', 'year'); // true
结尾

以上就是关于moment常用的一些方法,希望给各位带来一些帮助。