使用Moment.js处理日期
目录
各个浏览器对 Date.parse 的实现不一致,如果需要解析日期字符串,最好使用独立的 js 库。
Moment.js 就是一个解析、验证、操控和显示日期的js库。
项目主页://momentjs.com/
Github主页:https://github.com/moment/moment/
安装
Node.js
ES6
在使用 Moment.js 的模块中导入 moment。
下面只介绍最简单的用法,详细用法请参考官方文档。
解析
当前时刻
直接调用,返回表示当前时间的 Moment 对象。等同于 {js}moment(new Date()){/js}
解析字符串
先按匹配 ISO 8601,如果没有合适的格式,再使用 {js}new Date(string){/js} 创建日期。
可以调用{js}isValid{/js}方法检测日期是否有效。
解析提供格式的字符串
为了实现精确解析,推荐使用该方法。
<th>
Example
</th>
<th>
Description
</th>
<td>
<code>2014</code>
</td>
<td>
4 or 2 digit year
</td>
<td>
<code>14</code>
</td>
<td>
2 digit year
</td>
<td>
<code>-25</code>
</td>
<td>
Year with any number of digits and sign
</td>
<td>
<code>1..4</code>
</td>
<td>
Quarter of year. Sets month to first month in quarter.
</td>
<td>
<code>1..12</code>
</td>
<td>
Month number
</td>
<td>
<code>Jan..December</code>
</td>
<td>
Month name in locale set by <code>moment.locale()</code>
</td>
<td>
<code>1..31</code>
</td>
<td>
Day of month
</td>
<td>
<code>1st..31st</code>
</td>
<td>
Day of month with ordinal
</td>
<td>
<code>1..365</code>
</td>
<td>
Day of year
</td>
<td>
<code>1410715640.579</code>
</td>
<td>
Unix timestamp
</td>
<td>
<code>1410715640579</code>
</td>
<td>
Unix ms timestamp
</td>
周
<th>
Example
</th>
<th>
Description
</th>
<td>
<code>2014</code>
</td>
<td>
Locale 4 digit week year
</td>
<td>
<code>14</code>
</td>
<td>
Locale 2 digit week year
</td>
<td>
<code>1..53</code>
</td>
<td>
Locale week of year
</td>
<td>
<code>0..6</code>
</td>
<td>
Locale day of week
</td>
<td>
<code>Mon...Sunday</code>
</td>
<td>
Day name in locale set by <code>moment.locale()</code>
</td>
<td>
<code>2014</code>
</td>
<td>
ISO 4 digit week year
</td>
<td>
<code>14</code>
</td>
<td>
ISO 2 digit week year
</td>
<td>
<code>1..53</code>
</td>
<td>
ISO week of year
</td>
<td>
<code>1..7</code>
</td>
<td>
ISO day of week
</td>
时分秒及时区
<th>
Example
</th>
<th>
Description
</th>
<td>
<code>0..23</code>
</td>
<td>
24 hour time
</td>
<td>
<code>1..12</code>
</td>
<td>
12 hour time used with <code>a A</code>.
</td>
<td>
<code>am pm</code>
</td>
<td>
Post or ante meridiem (Note the one character <code>a p</code> are also considered valid)
</td>
<td>
<code>0..59</code>
</td>
<td>
Minutes
</td>
<td>
<code>0..59</code>
</td>
<td>
Seconds
</td>
<td>
<code>0..999</code>
</td>
<td>
Fractional seconds
</td>
<td>
<code>+12:00</code>
</td>
<td>
Offset from UTC as <code>+-HH:mm</code>, <code>+-HHmm</code>, or <code>Z</code>
</td>
显示
使用本地格式显示或者指定格式
解析字符串的格式同样适用,并且format还提供其他格式选项。详情请参看官方文档。
时间做差
Moment.js 可以直接显示时间做差的结果。
详细显示如下表所示:
<th>
Key
</th>
<th>
Sample Output
</th>
<td>
s
</td>
<td>
a few seconds ago
</td>
<td>
m
</td>
<td>
a minute ago
</td>
<td>
mm
</td>
<td>
2 minutes ago … 45 minutes ago
</td>
<td>
h
</td>
<td>
an hour ago
</td>
<td>
hh
</td>
<td>
2 hours ago … 22 hours ago
</td>
<td>
d
</td>
<td>
a day ago
</td>
<td>
dd
</td>
<td>
2 days ago … 25 days ago
</td>
<td>
M
</td>
<td>
a month ago
</td>
<td>
MM
</td>
<td>
2 months ago … 11 months ago
</td>
<td>
y
</td>
<td>
a year ago
</td>
<td>
yy
</td>
<td>
2 years ago … 20 years ago
</td>
计算两个时间点的时间差。
反向做差
操控
实现对日期的操控,比如一周前的时间:
支持链式调用
详细请参看文档。
本地化
提供大量国际化文件,方便切换。例如设为简体中文:
使用本地化功能,需要加载对应的本地化脚本,例如简体中文的脚本是 {code}locale/zh-cn.js{/code}