moment.js的方法及使用

JavaScript09

moment.js的方法及使用,第1张

Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率。

日常开发中,通常会对时间进行下面这几个操作:比如获取时间,设置时间,格式化时间,比较时间等等

npm install moment 或者 yarn add moment

格式化当前时间:

moment().format("YYYY-MM-DD HH:mm:ss")

当前年:

moment().format("YYYY")

moment().year()// Number

当前月:

moment().format('MM')

当前季度:

moment().quarter()

获取本日截止时间:

moment().startOf('day').format("YYYY-MM-DD HH:mm:ss")

moment().endOf('day').format("YYYY-MM-DD HH:mm:ss")

上一年/下一年:

上一年:moment().add(-1, 'y').format("YYYY")

下一年:moment().add(1, 'y').format("YYYY")

上几年和下几年同理,做momment日期加减,月季度亦同理

上一季度/下一季度:

上一季度:moment().add(-1, 'Q').quarter()

下一季度:moment().add(1, 'Q').quarter()

年开始结束时间:

moment().startOf('year')

moment().endOf('year')

季度开始结束时间:

当前季度的开始结束时间:

moment().startOf('quarter').format("YYYY-MM-DD")

moment().endOf('quarter').format("YYYY-MM-DD")

指定年指定季度的开始结束时间:(某年某季度的开始结束时间)

moment(moment().format("YYYY-02-01")).startOf('quarter').format("YYYY-MM-DD")

moment(moment().format("YYYY-02-01")).endOf('quarter').format("YYYY-MM-DD")

月度开始结束时间

moment().startOf('month')

moment().endOf('month')

昨天: moment().subtract(1, 'days')

明天: moment().add(1, 'days')

前一个月: moment().subtract(1, 'months')

后一个月: moment().add(1, 'months')

是可以的。

调用moment,不需要任何参数就可以创建当前时间的moment对象。可以创建时间为传入参数的moment对象。

>如果想直接在html文件中使用moment,那么需要先引入moment.js文件,可以在cdnjs中获得最新的moment.js文件。

首先在github上找到中文字典部分:

[javascript] view plain copy

moment.defineLocale('zh-cn', {

months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),

monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),

weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),

weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),

weekdaysMin : '日_一_二_三_四_五_六'.split('_'),

longDateFormat : {

LT : 'Ah点mm分',

LTS : 'Ah点m分s秒',

L : 'YYYY-MM-DD',

LL : 'YYYY年MMMD日',

LLL : 'YYYY年MMMD日Ah点mm分',

LLLL : 'YYYY年MMMD日ddddAh点mm分',

l : 'YYYY-MM-DD',

ll : 'YYYY年MMMD日',

lll : 'YYYY年MMMD日Ah点mm分',

llll : 'YYYY年MMMD日ddddAh点mm分'

},

meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,

meridiemHour: function (hour, meridiem) {

if (hour === 12) {

hour = 0

}

if (meridiem === '凌晨' || meridiem === '早上' ||

meridiem === '上午') {

return hour

} else if (meridiem === '下午' || meridiem === '晚上') {

return hour + 12

} else {

// '中午'

return hour >= 11 ? hour : hour + 12

}

},

meridiem : function (hour, minute, isLower) {

var hm = hour * 100 + minute

if (hm <600) {

return '凌晨'

} else if (hm <900) {

return '早上'

} else if (hm <1130) {

return '上午'

} else if (hm <1230) {

return '中午'

} else if (hm <1800) {

return '下午'

} else {

return '晚上'

}

},

calendar : {

sameDay : function () {

return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT'

},

nextDay : function () {

return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT'

},

lastDay : function () {

return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT'

},

nextWeek : function () {

var startOfWeek, prefix

startOfWeek = moment().startOf('week')

prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'

return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'

},

lastWeek : function () {

var startOfWeek, prefix

startOfWeek = moment().startOf('week')

prefix = this.unix() <startOfWeek.unix() ? '[上]' : '[本]'

return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'

},

sameElse : 'LL'

},

ordinalParse: /\d{1,2}(日|月|周)/,

ordinal : function (number, period) {

switch (period) {

case 'd':

case 'D':

case 'DDD':

return number + '日'

case 'M':

return number + '月'

case 'w':

case 'W':

return number + '周'

default:

return number

}

},

relativeTime : {

future : '%s内',

past : '%s前',

s : '几秒',

m : '1 分钟',

mm : '%d 分钟',

h : '1 小时',

hh : '%d 小时',

d : '1 天',

dd : '%d 天',

M : '1 个月',

MM : '%d 个月',

y : '1 年',

yy : '%d 年'

},

week : {

// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效

dow : 1, // Monday is the first day of the week.

doy : 4 // The week that contains Jan 4th is the first week of the year.

}

})

然后,把这段代码复制到moment.js中,位置在最后一句 “return _moment” 的前面,如下:

[javascript] view plain copy

//中文支持

moment.defineLocale('zh-cn', {

months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),

monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),

//...略

return _moment

运行,但是不起作用,还是显示英文日期。

再仔细观察代码,moment.js中最后返回的变量叫做 _moment,多了个下划线,于是修改刚才那段代码的开头部分,把moment改为_moment,成功!

[javascript] view plain copy

//中文支持

_moment.defineLocale('zh-cn', {

问题解决!