Moment.js中文文档系列之十插件(Plugins)

 2015年11月01日    786     声明


一些朋友为Moment.js开发了一些插件,这些插件可能会对你有所帮助。

  1. Strftime
  2. ISO Calendar
  3. Date Ranges
  4. Twix
  5. Twitter
  6. Jalaali Calendar
  7. MSDate
  8. Fiscal Quarters
  9. Precise Range
  10. Recur
  11. Parse Date Format
  12. Java DateFormat Parser
  13. Hijri Calendar
  14. Transform


1. Strftime

npm install moment-strftime

如果你想更爽的使用strftime函数代替LDML式的转换标识, 你可以使用Ben Oakes'的插件moment-strftime

插件源码github.com/benjaminoakes/moment-strftime


2. ISO Calendar

npm install moment-isocalendar

如果你正在找一个Python式的ISO日历方法,你可以使用Rocky Meza's的插件moment-isocalendar

moment中调出ISO日历方法可以参考下面,其返回值是一数组:

[year, week_of_year, day_of_week, minutes_since_midnight]

moment().isocalendar(); // [2012, 8, 5, 870]

你可以通过一个ISO日历数组对moment重写。

moment.fromIsocalendar([2011, 51, 5, 870]).format('LLLL');
// "Friday, December 23 2011 2:30 PM"

插件源码github.com/fusionbox/moment-isocalendar


3. Date Ranges

npm install moment-range

如果你在工作中要使用日期范围,可以使用Gianni Chiappetta's 的插件moment-range

相关文档请在你主页查看github.com/gf3/moment-range


4. Twix

npm install twix

另一个日期范围的插件,是Isaac Cambron's的类库Twix。它有很多日期范围相关的特征,尤其是在格式化方面。例如:

var t = moment("1/25/1982 9:30 AM").twix("1/25/1982 1:30 PM");
t.isCurrent(); // false
t.count('minutes'); // 241
t.format();  // 'Jan 25, 1982, 9:30 AM - 1:30 PM'
t.simpleFormat("h:m"); // '9:30 - 1:30'

完整文档及相关选项请:查看详细


5. Twitter

如果你想按Twitter的格式对日期进行格式化,你可以使用hijonathan的插件moment.twitter

它会用简单方式以长日期和短日期两种版本,人性化的显示时间戳。

moment().subtract(5, 'hours').twitterLong();
// 5 hours

是滴,它是智能多元化的。

moment().subtract(1, 'hour').twitterLong();
// 1 hour

对你来说还不够短吗?

moment().subtract(6, 'days').twitterShort();
// 6d


6. Jalaali Calendar

npm install moment-jalaali

如果你的工作中用到了Jalaali日历系统,你可以使用Behrang Noruzi Niya's的插件moment-jalaali

安装后,它会对moment进行包装,而且moment会使用Jalaali年和月等进行格式化和解析。下面一个简单示例:

var m = moment('1360/5/26', 'jYYYY/jM/jD'); // Parse a Jalaali date.
m.format('jYYYY/jM/jD [is] YYYY/M/D'); // 1360/5/26 is 1981/8/17

插件源码github.com/behrang/moment-jalaali


7. MSDate

如果你正在使用.net中的OLE自动日期,请参考Markit On Demand的插件moment-msdate。通过这个插件你可以在JavaScript日期中使用OA日期格式。

moment日期转换为OA日期。

moment().toOADate(); // a floating point number

或者将OA日期转换为moment日期。

moment.fromOADate(41493); // Wed Aug 07 2013 00:00:00 GMT-0600 (MDT)

更多信息和文档请查看其GitHub源码markitondemand.github.io/moment-msdate


8. Fiscal Quarters

如果你有财政、日历或学术方面的需求,你可以使用robgallen的插件moment-fquarter

你可以任何moment对象中调用它的方法,它会返回一个格式化过的季度的字符串。

moment("2013-01-01").fquarter();
// Q4 2012/13

你可以传入任意一个表示季度开始月份的字符串,如:July。

moment("2013-01-01").fquarter(7);
// Q3 2012/13

如果想使用日历季度,那么从1月开始

moment("2013-01-01").fquarter(1);
// Q1 2013


9. Precise Range

Precise Range插件是Rob Dawson写的,可以用来人性化的显示日期/时间的范围。

moment("2014-01-01 12:00:00").preciseDiff("2015-03-04 16:05:06");
 // 1 year 2 months 3 days 4 hours 5 minutes 6 seconds
moment.preciseDiff("2014-01-01 12:00:00", "2014-04-20 12:00:00");
// 3 months 19 days


10. Recur

npm install moment-recur

如果你工作中用到了循环日期,你可以使用Casey Trimm的插件moment-recur

这个插件让你可以创建基于时长的循环(天、周等)和基于日历的循环。

插件源码、文档、示例等请参考github.com/c-trimm/moment-recur

var interval = moment( "01/01/2014" ).recur().every(2).days(); // Length Interval
interval.matches( "01/03/2014" ); // true
interval.next( 2, "L" ); // ["01/03/2014", "01/05/2014"]
interval.forget( "days" ); // Remove a rule
interval.dayOfMonth( 10 ); // Calendar Interval
interval.matches( "05/10/2014" ); // true
interval.previous( 2, "L" ); // ["12/10/2013", "11/10/2013"]



11. Parse Date Format

npm install moment-parseformat

这个插件对日期/时间字符串的格式化进行了扩展。

var format = moment.parseFormat('Thursday, February 6th, 2014 9:20pm');
// dddd, MMMM Do, YYYY h:mma
moment().format(format); // format

更多使用示例请参考minutes.io


12. Java DateFormat Parser

npm install moment-jdateformatparser

你工作中如果需要java.text.DateFormat,你可以试试这个插件。

moment("2013-12-24 14:30").formatWithJDF("dd.MM.yyyy");  // returns the formatted date "24.12.2013"
moment().toJDFString("DD.MM.YYYY");  // returns the Java format pattern "dd.MM.yyyy"

插件源码github.com/MadMG/moment-jdateformatparser


13. Hijri Calendar

npm install moment-hijri

在你的工作中如果想使用Hijri日历,你可以使用moment-hijri插件。moment-hijri是一个基于Umm al-Qura的Hijri lunar日历插件。此插件由Suhail Alkowaileet开发。

插件源码github.com/xsoh/moment-hijri


14. Transform

bower install moment-transform

moment-transform是一个通过参数操作日期的插件。

moment().transform('YYYY-MM-+01 00:00:00.000'); // Tonight at midnight
moment().transform('14:30:00.000'); // Today, 2:30 pm
moment().transform('YYYY-MM--30 00:00:00.000'); // 30 days ago

可选参数允许您指定自定义样式和强制使用严格模式。

moment().transform('+01MMYYYY', 'DD/MM/YYYY', false); // Tomorrow, same time
moment().transform('+01MMYYYY', 'DD/MM/YYYY', true); // Invalid date


说明:这是Moment.js中文系列文档中的最后一篇,这一系列文档并不是对Moment.js文档的简单翻译,而是结合笔者的使用做了适当的取舍,希望能对阅者有一定的帮助。本文档Moment.js后续版本更新而不定期的整理,敬请期待。