moment

官方api

1. 安装导入

1.1 安装

npm install moment -g # 全局安装
npm install moment # 安装

1.2 导入

//require 方式
var moment=require('moment');
//import 方式
import moment from 'moment';

1.3 设定moment区域为中国

//require 方式
require('moment/locale/zh-cn')
moment.locale('zh-cn');
//import 方式
import 'moment/locale/zh-cn'
moment.locale('zh-cn');

1.3 格式化

格式化参数对照表:

格式代码 说明 返回值例子
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
//当前日期格式化
moment().format('MMMM Do YYYY, h:mm:ss a'); -> 四月 6日 2015, 3:55:57 下午
moment().format('dddd'); -> 星期一
moment().format("MMM Do YY"); -> 4月 6日 15
moment().format('YYYY [escaped] YYYY'); -> 2015 escaped 2015
moment().format(); -> 2015-04-06T15:55:57+08:00
moment().format('YYYY-MM-DD'); -> 2015-04-06
moment().format('YYYY-MM-DD h:mm:ss a'); -> 2015-04-06 03:55:57 下午
//指定日期格式化
moment("20111031", "YYYYMMDD").fromNow(); -> 3年前
moment("20120620", "YYYYMMDD").fromNow(); -> 3年前
moment().startOf('day').fromNow(); -> 16小时前
moment().endOf('day').fromNow(); -> 8小时内
moment().startOf('hour').fromNow(); -> 1小时前
//当前日期向前或者向后推的日期格式化
moment().subtract(10, 'days').calendar(); -> 2015年3月27日
moment().subtract(6, 'days').calendar(); -> 上周二下午3点55
moment().subtract(3, 'days').calendar(); -> 上周五下午3点55
moment().subtract(1, 'days').calendar(); -> 昨天下午3点55
moment().calendar(); -> 今天下午3点55
moment().add(1, 'days').calendar(); -> 明天下午3点55
moment().add(3, 'days').calendar(); -> 本周四下午3点55
moment().add(10, 'days').calendar(); -> 2015年4月16日
//也可以使用下面方式日期格式化
moment().format('L'); -> 2015-04-06
moment().format('l'); -> 2015-04-06
moment().format('LL'); -> 2015年4月6日
moment().format('ll'); -> 2015年4月6日
moment().format('LLL'); -> 2015年4月6日下午3点55
moment().format('lll'); -> 2015年4月6日下午3点55
moment().format('LLLL'); -> 2015年4月6日星期一下午3点55
moment().format('llll'); -> 2015年4月6日星期一下午3点55

1.4 解析

1.4.1 当前时间

var now = moment();
或者
var now = moment(new Date())

1.4.2 字符串解析时间

moment(String);
// 使用字符串创建时间日期对象时,先会检查字符串是否与ISO-8601相匹配,然后再通过 new Date(String) 创建对象//ISO 8601字符串需要日期部分
2013-02-08  # A calendar date part
2013-W06-5  # A week date part
2013-039    # An ordinal date part//还可以包括时间部分,通过空格或大写字母T与日期部分分开
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//任何日期部分都可以包含时间部分
2013-02-08 09  # A calendar date part and hour time part
2013-W06-5 09  # A week date part and hour time part
2013-039 09    # An ordinal date part and hour time part//如果一个时间部分被包括,一个从UTC偏移量也可被包括为+-HH:mm,+-HHmm,或Z
2013-02-08 09+07:00            # +-HH:mm
2013-02-08 09-0100             # +-HHmm
2013-02-08 09Z                 # Z
2013-02-08 09:30:26.123+07:00  # +-HH:mm//如果字符串与上述任何格式都不匹配且无法解析Date.parse,moment#isValid则返回false
moment("not a real date").isValid(); // false

1.4.3 字符串+格式 创建对象

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);
//如果您知道输入字符串的格式,则可以使用它来解析片刻
moment("12-25-1995", "MM-DD-YYYY");
//解析器忽略非字母数字字符,因此以下两个都将返回相同的内容
moment("12-25-1995", "MM-DD-YYYY");
moment("12/25/1995", "MM-DD-YYYY");

年月日对照表:

格式代码 说明 返回值例子
YYYY 4或2位数年份 2014
YY 2位数年份 14
Q 一年四分之一。将季度设置为季度的第一个月 1…4
M MM 月份编号 1…12
MMM MMMM 设置的语言环境中的月份名称 moment.locale() Jan…December
D DD 一个月的一天 1…31
Do 有序的月份日 1st…31st
DDD DDDD 1…365 一年中的一天
X Unix时间戳 1410715640.579
x Unix ms时间戳 1410715640579

周年,周和工作日对照表

格式代码 说明 返回值例子
gggg Locale 4位数周 2014
gg Locale 2位数周 14
w ww 一年中的第几周 1…53
e 一周中的星期几 1…7
ddd dddd 设置的语言环境中的日期名称 moment.locale() Mon…Sunday
GGGG ISO 4位数周 2014
GG ISO 2位数周 14
W WW ISO周一年 1…53
E ISO星期几 1…7

小时,分钟,秒,毫秒对照表

格式代码 说明 返回值例子
H HH 24小时的时间 0…23
hh 小时,12小时制,有前导零 00到12
h 小时,12小时制,无前导零 0到12
A 大写的AM PM AM PM
a 小写的am pm am pm
m 没有前导零的分钟数 0到59
mm 有前导零的分钟数 00到59
s 没有前导零的秒数 1到59
ss 有前导零的描述 01到59
S 十分之一秒 0…9
SS 几百秒 0…99
SSS 千分之一秒 0…999
SSSS 小秒 0000…9999
Z ZZ 从UTC偏移量±HH:mm,±HHmm或Z +12:00
//除非您指定时区偏移量,否则解析字符串将在当前时区中创建日期
moment("2010-10-20 4:30",       "YYYY-MM-DD HH:mm");   // parsed as 4:30 local time
moment("2010-10-20 4:30 +0000", "YYYY-MM-DD HH:mm Z"); // parsed as 4:30 UTC
//如果由解析的输入产生的时刻不存在,moment#isValid则返回false
moment("2010 13",           "YYYY MM").isValid();     // false (not a real month)
moment("2010 11 31",        "YYYY MM DD").isValid();  // false (not a real day)
moment("2010 2 29",         "YYYY MM DD").isValid();  // false (not a leap year)
moment("2010 notamonth 29", "YYYY MMM DD").isValid(); // false (not a real month name)
//可以将区域设置键作为第三个参数传递给moment()和moment.utc()
moment('2012 juillet', 'YYYY MMM', 'fr');
moment('2012 July',    'YYYY MMM', 'en');
//可以为最后一个参数指定一个布尔值,以使Moment使用严格的解析。严格的解析要求格式和输入完全匹配
moment('It is 2012-05-25', 'YYYY-MM-DD').isValid();       // true
moment('It is 2012-05-25', 'YYYY-MM-DD', true).isValid(); // false
moment('2012-05-25',       'YYYY-MM-DD', true).isValid(); // true//解析两位数年份
//默认情况下,假设高于68的两位数年份在1900年,而68年或以下的年份假定为2000年。
//可以通过替换moment.parseTwoDigitYear方法来更改此设置

1.4.4 多时间格式解析

如果您不知道输入字符串的确切格式,但知道它可能是众多格式之一,则可以使用一组格式

moment(String, String[], String, Boolean);
moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);
//首选阵列中较早的格式
moment("29-06-1995", ["MM-DD-YYYY", "DD-MM", "DD-MM-YYYY"]); // uses the last format
moment("05-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"]);          // uses the first format
//还可以指定locale和strictness参数。它们的工作方式与单格式情况相同
moment("29-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"], 'fr');       // uses 'fr' locale
moment("29-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"], true);       // uses strict parsing
moment("05-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"], 'fr', true); // uses 'fr' locale and strict parsing

注意:解析多种格式比解析单一格式要慢得多。如果可以避免它,解析单个格式要快得多

1.4.5 字符串的特殊时间格式

moment(String, moment.CUSTOM_FORMAT, [String], [Boolean]);
moment(String, [..., moment.ISO_8601, ...], [String], [Boolean]);moment("2010-01-01T05:06:07", moment.ISO_8601);
moment("2010-01-01T05:06:07", ["YYYY", moment.ISO_8601]);

1.4.6 创建对象

moment({unit: value, ...});
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});
//day并且date键都表示每月的日期
//moment(Array)和new Date(year, month, date),月份是0索引

1.4.7 unix 迁移量

moment(Number);
var day = moment(1318781876406);
//与之类似new Date(Number),您可以通过传递一个整数值来创建片刻,
//该整数值表示自Unix Epoch(1970年1月1日12 AM UTC)以来的毫秒数

1.4.8 unix 时间戳

moment.unix(Number)
//要从Unix时间戳(自Unix Epoch以来的秒数)创建时刻,请使用moment.unix(Number)
var day = moment.unix(1318781876);
//实现为moment(timestamp * 1000),因此包括输入时间戳中的部分秒
var day = moment.unix(1318781876.721);

1.4.9 日期对象

moment(Date);
//可以Moment使用预先存在的本机Javascript Date对象创建一个
var day = new Date(2011, 9, 16);
var dayWrapper = moment(day);
//这个克隆Date对象; 进一步改变Date不会影响Moment,反之亦然

1.4.10 数组

moment(Number[]);
//可以使用一组数字创建一个时刻,这些数字镜像传递给新Date()的参数
[year, month, day, hour, minute, second, millisecond]
moment([2010, 1, 14, 15, 25, 50, 125]); // February 14th, 3:25:50.125 PM
//超过一年的任何值都是可选的,并且将默认为最低可能的数字
moment([2010]);        // January 1st
moment([2010, 6]);     // July 1st
moment([2010, 6, 10]); // July 10th
//使用数组构造将在当前时区中创建日期。要从UTC中的数组创建日期,请使用moment.utc(Number[])
moment.utc([2010, 1, 14, 15, 25, 50, 125]);moment([2010, 13]).isValid();     // false (not a real month)
moment([2010, 10, 31]).isValid(); // false (not a real day)
moment([2010, 1, 29]).isValid();  // false (not a leap year)

1.4.11 复制

moment(Moment);
//所有的时刻都是可变的。如果你想要克隆片刻,你可以明确地或隐含地这样做
var a = moment([2012]);
var b = moment(a);
a.year(2000);
b.year(); // 2012//此外,您可以打电话moment#clone克隆片刻
var a = moment([2012]);
var b = a.clone();
a.year(2000);
b.year(); // 2012

moment 时间日期处理库 解析部分相关推荐

  1. Day.js轻量级 JavaScript 时间日期处理库可替代Moment.js

    Day.js 是一个仅 2kb 大小的轻量级 JavaScript 时间日期处理库,和 Moment.js 的 API 设计保持完全一样.如果你曾经用过 Moment.js ,那么你已经知道如何使用 ...

  2. Day.js 一个轻量级的 JavaScript 时间日期处理库

    在项目中难免要去处理时间和日期,所以就一定会用到 Moment.js ,Moment.js 是一个大而全的 JS 时间库,使得我们处理时间和日期变得简便,但是 Moment.js 太重了(大约 200 ...

  3. vue中使用day.js(时间日期处理库)

    安装:npm install dayjs --save 引入: var dayjs = require('dayjs') //commonjs //import dayjs from 'dayjs' ...

  4. Android实时显示时间日期(极简)

    Android实时显示时间日期 示例图 示例图解析 TextClock时间控件 常用的xml属性及常用方法 示例源代码 .xml文件 .java 示例图 示例图解析 格式 说明 yyyy/MM/dd ...

  5. Java 8中的时间日期库DateTime API及示例

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理 ...

  6. sqlserver获取前一天的日期_Java8新特性时间日期库DateTime API及示例

    点击上方蓝字关注「程序新视界」 Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和Simp ...

  7. java instant获取微秒转成日期格式_Java8新特性时间日期库DateTime API及示例

    点击上方蓝字关注「程序新视界」 Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和Simp ...

  8. Java 8 时间日期库的20个使用演示样例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...

  9. java system datetime_Java8新特性时间日期库DateTime API及示例

    Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和SimpleDateFormat等API ...

最新文章

  1. 【iOS开发】企业版证书($299)In-House方式发布指南 (转)
  2. 第三次组队赛 (DFSBFS)
  3. 交叉编译inetutils并配置telnet服务
  4. hdu 1892二维树状数组
  5. getParameterValues用法
  6. 异步解耦_如何使用异步生成器解耦业务逻辑
  7. android 360自动更新,解决Android百度自动更新SDK和360自动更新SDK兼容
  8. 面试准备——Java回顾:基础编程(基本语法、面向对象、异常处理)
  9. ue4蓝图碰撞检测的类型_UE4_自定义相机碰撞组件
  10. 如果出现网络请求3840的这种错误
  11. 幅值与峰峰值的计算_正弦波的幅度指的是峰值还是峰峰值
  12. JVM-深入理解JVM内存模型、类加载机制、内存分配机制
  13. 第一章 SQL中使用的符号
  14. Java游戏服务器系列:传统的BIO(OIO)、NIO与Netty中的BIO(OIO)、NIO
  15. 旅游业如何使用数据分析?
  16. 21_ue4进阶末日生存游戏开发[行为树]
  17. pcm5102a解码芯片音质评测_airpods超强平替,新品JEET ONE蓝牙耳机开箱评测!
  18. C++画图之GOC编程 第6课 通天云梯
  19. 票务公司网上订票系统
  20. TMC5240AUU+高性能步进电机控制器-加减速规划运动控制芯片

热门文章

  1. 苹果手机打电话没有声音怎么回事_网页看视频没有声音怎么回事?
  2. 小米机顶盒显示网络无法连接服务器,小米盒子无线网络连接不上怎么回事 - 卡饭网...
  3. 计算机顶会:投稿时间 会议介绍
  4. 数字校园APP开发与应用
  5. android分享视频到微信,android 分享文本、图片、音乐、视频到微信朋友圈、好友、我的收藏...
  6. ipfs 存储目录结构
  7. iOS_3DTouch使用
  8. 腾讯云点播视频存储(Web端视频上传)
  9. 从k8s.gcr.io拉取镜像
  10. 人生无捷径「一万小时定律·正篇」