moment.js常见格式化处理各种时间方法

2021-08-18 10:16:00 0 7228

moment.js常见格式化处理各种时间方法.jpg


Moment.js 是一个简单易用的轻量级 JavaScript 日期处理类库,提供了日期格式化、日期解析等功能。它支持在浏览器和 NodeJS 两种环境中运行。此类库能够将给定的任意日期转换成多种不同的格式,具有强大的日期计算功能,同时也内置了能显示多样的日期形式的函数。另外,它也支持多种语言,你可以任意新增一种新的语言包。


格式化时间 format:

moment().format();                   // "2014-09-08T08:02:17-05:00" (ISO 8601,无小数秒钟)
moment().format('YYYY-MM-DD HH:mm:ss');                 //  "2014-09-08 08:17:12
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
moment().format("ddd, hA");              // "Sun, 3PM"

更多格式化配置参数,请查看底部附录


calendar() 

日历时间显示相对于给定的 referenceTime 的时间(默认为现在),但与 moment#fromNow 略有不同。

moment().calendar();
moment().calendar(referenceTime);
moment().calendar(referenceTime, formats);  // 从 2.10.5 开始


// 相对于当前时间的格式化显示字符串
moment(timestamp).calendar(null, {
    sameDay: 'HH:mm',
    nextDay: '[明天]HH:mm',
    nextWeek: 'MM月DD日 HH:mm',
    lastDay: '[昨天]HH:mm',
    lastWeek: 'MM月DD日 HH:mm',
    sameElse: (now) => {
        if (moment().year() === new Date(timestamp).getFullYear()) {
            return 'MM月DD日 HH:mm';
        } else {
            return 'YYYY年MM月DD日 HH:mm';
        }
    },
});



获取当前时间往前的时间:

moment().format("YYYY-MM-DD HH:mm:ss"); //当前时间
moment().subtract(10, "days").format("YYYY-MM-DD"); //当前时间的前10天时间
moment().subtract(1, "years").format("YYYY-MM-DD"); //当前时间的前1年时间
moment().subtract(3, "months").format("YYYY-MM-DD"); //当前时间的前3个月时间
moment().subtract(1, "weeks").format("YYYY-MM-DD"); //当前时间的前一个星期时间


获取开始时间 Start of Time :moment().startOf(String)

// 获取今天0时0分0秒
moment().startOf('day')
// 获取本周第一天(周日)0时0分0秒
moment().startOf('week')
// 获取本周周一0时0分0秒
moment().startOf('isoWeek')
// 获取当前月第一天0时0分0秒
moment().startOf('month')


获取结束时间 End of Time :moment().endOf(String)

// 获取今天23时59分59秒
moment().endOf('day')
// 获取本周最后一天(周六)23时59分59秒
moment().endOf('week')
// 获取本周周日23时59分59秒
moment().endOf('isoWeek')
// 获取当前月最后一天23时59分59秒
moment().endOf('month')


计算两个日期的时间差

// 计算两个日期的时间差(支持的度量有 years、months、weeks、days、hours、minutes 和 seconds,默认的单位是毫秒。)
moment().diff(moment('2023/02/02'), 'days')


加减时间

// 减时间,在当前时间,往前推进10天
moment().subtract(10, "days")

// 加时间,在当前时间,往后加10天
moment().add(10, "days")


获取当前月的总天数

moment().daysInMonth()


附录1:格式化时间format参数

令牌 输出
月份 M 1 2 ... 11 12

Mo 1st 2nd ... 11th 12th

MM 01 02 ... 11 12

MMM Jan Feb ... Nov Dec

MMMM January February ... November December
季度 Q 1 2 3 4

Qo 1st 2nd 3rd 4th
月份的日期 D 1 2 ... 30 31

Do 1st 2nd ... 30th 31st

DD 01 02 ... 30 31
年份的日期 DDD 1 2 ... 364 365

DDDo 1st 2nd ... 364th 365th

DDDD 001 002 ... 364 365
星期几 d 0 1 ... 5 6

do 0th 1st ... 5th 6th

dd Su Mo ... Fr Sa

ddd Sun Mon ... Fri Sat

dddd Sunday Monday ... Friday Saturday
星期几(语言环境) e 0 1 ... 5 6
星期几(ISO) E 1 2 ... 6 7
年份的星期 w 1 2 ... 52 53

wo 1st 2nd ... 52nd 53rd

ww 01 02 ... 52 53
年份的星期(ISO) W 1 2 ... 52 53

Wo 1st 2nd ... 52nd 53rd

WW 01 02 ... 52 53
年份 YY 70 71 ... 29 30

YYYY 1970 1971 ... 2029 2030

Y 1970 1971 ... 9999 +10000 +10001
注意:对于 9999 年以后的日期,这符合 ISO 8601 标准。
周年 gg 70 71 ... 29 30

gggg 1970 1971 ... 2029 2030
周年(ISO) GG 70 71 ... 29 30

GGGG 1970 1971 ... 2029 2030
子午线 A AM PM

a am pm
小时 H 0 1 ... 22 23

HH 00 01 ... 22 23

h 1 2 ... 11 12

hh 01 02 ... 11 12

k 1 2 ... 23 24

kk 01 02 ... 23 24
分钟 m 0 1 ... 58 59

mm 00 01 ... 58 59
秒钟 s 0 1 ... 58 59

ss 00 01 ... 58 59
小数秒钟 S 0 1 ... 8 9

SS 00 01 ... 98 99

SSS 000 001 ... 998 999

SSSS ... SSSSSSSSS 000[0..] 001[0..] ... 998[0..] 999[0..]
时区 z or zz EST CST ... MST PST
注意:从 1.6.0 版本开始,z/zz 格式的令牌已从普通的 moment 对象中弃用。  但是,如果将特定时区与 moment-timezone 插件一起使用,它们会起作用。

Z -07:00 -06:00 ... +06:00 +07:00

ZZ -0700 -0600 ... +0600 +0700
Unix 时间戳 X 1360013296
Unix 毫秒时间戳 x 1360013296123


随缘而来,乘风而去,山高海阔,自有我风采!
所属分类: JavaScript

发表留言