Moment.js的常用方法

安装与引用

官方文档

安装

npm install moment

引用

var moment = require('moment');

自定义配置

获取当前语言

moment.locale();

加载语言

moment.locale('zh-cn');

UTC

获取UTC

moment().utc();

UTC偏移量

moment().utcOffset();

设置偏移量

以下是相同的

moment().utcOffset("+08:00");
moment().utcOffset(8);
moment().utcOffset(480);

Moment和Date

相互转换

Date ==> Moment

moment(new Date())

Moment ==> Date

moment().toDate()

是否 Moment 对象

moment.isMoment() // false
moment.isMoment(new Date()) // false
moment.isMoment(moment()) // true

是否 Date 对象

moment.isDate(); // false
moment.isDate(new Date()); // true
moment.isDate(moment()); // false

验证日期格式是否正确

moment("not a real date").isValid(); // false

初始化日期

字符串

var day = moment("1995-12-25");

支持一下格式

2013-02-08T09            # An hour time part separated by a T
2013-02-08 09            # An hour time part separated by a space
2013-02-08 09:30         # An hour and minute time part
2013-02-08 09:30:26      # An hour, minute, and second time part
2013-02-08 09:30:26.123  # An hour, minute, second, and millisecond time part
2013-02-08 24:00:00.000  # hour 24, minute, second, millisecond equal 0 means next day at midnight

字符串+格式化

moment("12-25-1995", "MM-DD-YYYY");

对象方式

moment({ hour:15, minute:10 });
moment({ y:2010, M:3, d:5, h:15, m:10, s:3, ms:123});
moment({ year :2010, month :3, day :5, hour :15, minute :10, second :3, millisecond :123});
moment({ years:2010, months:3, days:5, hours:15, minutes:10, seconds:3, milliseconds:123});
moment({ years:2010, months:3, date:5, hours:15, minutes:10, seconds:3, milliseconds:123});

Unix 偏移量(毫秒)

var day = moment(1318781876406);

取值

moment().valueOf();

Unix 时间戳(秒)

var day = moment.unix(1318781876);

取值

moment().unix();

Date对象

var day = new Date(2011, 9, 16);
var dayWrapper = moment(day);

数组

moment([2010, 1, 14, 15, 25, 50, 125]);
moment([2010]);   
moment([2010, 6]); 
moment([2010, 6, 10]);

取值/赋值

日期和时间

// 毫秒
moment().millisecond(Number);
moment().millisecond(); // Number
moment().milliseconds(Number);
moment().milliseconds(); // Number
// 秒
moment().second(Number);
moment().second(); // Number
moment().seconds(Number);
moment().seconds(); // Number
// 分钟
moment().minute(Number);
moment().minute(); // Number
moment().minutes(Number);
moment().minutes(); // Number
// 小时
moment().hour(Number);
moment().hour(); // Number
moment().hours(Number);
moment().hours(); // Number
// 日期
moment().date(Number);
moment().date(); // Number
moment().dates(Number);
moment().dates(); // Number

年月日时分秒

// 取值
moment().get('year');
moment().get('month');  // 0 to 11
moment().get('date');
moment().get('hour');
moment().get('minute');
moment().get('second');
moment().get('millisecond');
// 赋值
moment().set('year', 2013);
moment().set('month', 3);  // April
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});

星期的取值和赋值

周日为0

周六为6

moment().day(-7); // last Sunday (0 - 7)
moment().day(7); // next Sunday (0 + 7)
moment().day(10); // next Wednesday (3 + 7)
moment().day(24); // 3 Wednesdays from now (3 + 7 + 7 + 7)

按区域标准

// 比如周一是一星期的第一天
moment().weekday(-7); // last Monday
moment().weekday(7); // next Monday

时间操作

Key

Shorthand

years

y

quarters

Q

months

M

weeks

w

days

d

hours

h

minutes

m

seconds

s

milliseconds

ms

加法

moment().add(7, 'days').add(1, 'months'); // with chaining
moment().add(7, 'd');
moment().add({days:7,months:1}); // with object literal

减法

moment().subtract(7, 'days');

显示

比如

moment().format();                                // "2014-09-08T08:02:17-05:00" (ISO 8601)
moment().format("YYYY-MM-DD hh:mm:ss");           // "2014-09-08 02:17:10"
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
moment().format("ddd, hA");                       // "Sun, 3PM"
moment('gibberish').format('YYYY MM DD');         // "Invalid date"

排除字符

moment().format('[today] dddd'); // 'today Sunday'

格式化字符串

Token

Output

Month

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

Quarter

Q

1 2 3 4

Day of Month

D

1 2 … 30 31

Do

1st 2nd … 30th 31st

DD

01 02 … 30 31

Day of Year

DDD

1 2 … 364 365

DDDo

1st 2nd … 364th 365th

DDDD

001 002 … 364 365

Day of Week

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

Day of Week (Locale)

e

0 1 … 5 6

Day of Week (ISO)

E

1 2 … 6 7

Week of Year

w

1 2 … 52 53

wo

1st 2nd … 52nd 53rd

ww

01 02 … 52 53

Week of Year (ISO)

W

1 2 … 52 53

Wo

1st 2nd … 52nd 53rd

WW

01 02 … 52 53

Year

YY

70 71 … 29 30

YYYY

1970 1971 … 2029 2030

Week Year

gg

70 71 … 29 30

gggg

1970 1971 … 2029 2030

Week Year (ISO)

GG

70 71 … 29 30

GGGG

1970 1971 … 2029 2030

AM/PM

A

AM PM

a

am pm

Hour

H

0 1 … 22 23

HH

00 01 … 22 23

h

1 2 … 11 12

hh

01 02 … 11 12

Minute

m

0 1 … 58 59

mm

00 01 … 58 59

Second

s

0 1 … 58 59

ss

00 01 … 58 59

Fractional Second

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..]

Timezone

z or zz

EST CST … MST PST Note: as of 1.6.0, the z/zz format tokens have been deprecated.

Z

-07:00 -06:00 … +06:00 +07:00

ZZ

-0700 -0600 … +0600 +0700

Unix Timestamp

X

1360013296

Unix Millisecond Timestamp

x

1360013296123

比较

//之前
moment('2010-10-20').isBefore('2010-10-21'); // true
//相同
moment('2010-10-20').isSame('2010-10-20'); // true
//之后
moment('2010-10-20').isAfter('2010-10-19'); // true
//之间
moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
// 是否闰年
moment().isLeapYear();

对象克隆

var a = moment([2012]);
var b = moment(a);
a.year(2000);
b.year(); // 2012

或者

var a = moment([2012]);
var b = a.clone();
a.year(2000);
b.year(); // 2012

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT-Coder

Redis持久化最全面的知识详解

持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成...

9610
来自专栏Pythonista

Linux三剑客入门

grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的...

14830
来自专栏全栈前端精选

深入理解Node.js 进程与线程(8000长文彻底搞懂)

进程与 线程是一个程序员的必知概念,面试经常被问及,但是一些文章内容只是讲讲理论知识,可能一些小伙伴并没有真的理解,在实际开发中应用也比较少。本篇文章除了介绍概...

9420
来自专栏实时计算

Hbase入门(三)——数据模型

Hbase最核心但也是最难理解的就是数据模型,由于与传统的关系型数据库不同,虽然Hbase也有表(Table),也有行(Row)和列(Column),但是与关系...

14420
来自专栏全栈前端精选

两个闹钟,10 分钟教你写出 lodash 中的 debounce & throttle

相比网上教程中的 debounce 函数,lodash 中的 debounce 功能更为强大,相应的理解起来更为复杂;

8510
来自专栏科技分享

linux驱动学习笔记---实现中断下半部以及驱动编写规范(七)【转】

转自:https://blog.csdn.net/weixin_42471952/article/details/81609141

8130
来自专栏蛰虫始航

用pandas处理时间格式数据

我们在处理时间相关的数据时有很多库可以用,最常用的还是内置的datetime、time这两个。做数据分析时基本都会导入pandas库,而pandas提供了Tim...

38730
来自专栏小麦苗的DB宝专栏

【DB笔试面试625】在Oracle中,如何获取timestamp类型的精度到纳秒级?

秒(s)的单位都有毫秒(ms,millisecond),微秒(μs,microsecond),纳秒(ns,nanosecond),它们之间的换算单位为千进制,1...

10820
来自专栏小麦苗的DB宝专栏

【DB笔试面试633】在Oracle中,什么是待定的统计信息(Pending Statistic)?

在数据库系统运维中,DBA常常希望维持SQL执行计划的稳定。很多DBA和开发人员对于Hint的依赖,很大程度上也是源于在CBO情况下,执行计划对于统计量过于依赖...

6320
来自专栏Java源码进阶

Semaphore流量控制和源码分析

原文链接:https://www.jhonrain.org/2019/09/18/高并发-高并发-Semaphore源码解析和使用场景/

1910

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励