# 插件

back

Some other people have made plugins for Moment.js that may be useful to you.

# Strftime

npm install moment-strftime
1

If you are more comfortable working with strftime instead of LDML-like parsing tokens, you can use Ben Oakes' plugin moment-strftime.

The repository is located at https:///github.com/benjaminoakes/moment-strftime

# ISO Calendar

npm install moment-isocalendar
1

If you are looking for a Python-like isocalendar method, you can use Rocky Meza's plugin

# moment-isocalendar

Calling the isocalendar method on a moment will return an array like the following:

[year, week_of_year, day_of_week, minutes_since_midnight]

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

You can also reconstruct a moment from a isocalendar array.

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

The repository is located at https://github.com/fusionbox/moment-isocalendar

# Date Ranges

npm install moment-range
1

If you need to work with date ranges, you can use Gianni Chiappetta's plugin moment-range.

Documentation can be found on the homepage https://github.com/gf3/moment-range.

And it is also available for the web at the repository below.

The repository is located at https://github.com/gf3/moment-range

# Twix

npm install twix
1

Another range plugin is Isaac Cambron's library Twix. It has many range-related features and excels at formatting ranges readably. For example,

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'
1
2
3
4
5

Full documentation of all the options and features is here.

It's available on npm like so:

npm install twix
1

Or just grab the JS file from here.

# Twitter

If you're trying to format times for tweets like the way Twitter does, you can use the moment.twitter plugin by @hijonathan.

It's a simple way to display both short and long versions of human-readable timestamps.

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

Yes, it does smart pluralization.

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

Not short enough for you?

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

# Jalaali Calendar

npm install moment-jalaali
1

If you want to work with Jalaali calendar system (Jalali, Persian, Khorshidi or Shamsi), you can use Behrang Noruzi Niya's plugin moment-jalaali.

When installed, it will wrap moment and moment will be able to format and parse Jalaali years and months. Here is a short example:

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
1
2

The repository is located at github.com/behrang/moment-jalaali.

# MSDate

If you are using OLE Automation dates in .NET check out Markit On Demand's moment-msdate. Using this plugin allows you to format OA dates into JavaScript dates and vice-versa.

Convert a moment to an OA date:

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

Or, convert an OA date to a moment:

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

More information and detailed docs can be found on GitHub at http://markitondemand.github.io/moment-msdate/.

# Fiscal Quarters

If you ever have need for Fiscal, Calendar or Academic quarters, you can use the moment-fquarter plugin by @robgallen.

At its simplest, just call the fquarter method on any moment object. It returns a formatted string with April being the first quarter.

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

You can pass in any month as the starting quarter, e.g. July

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

If you want calendar quarters, start in January

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

# Precise Range

The Precise Range plugin, written by Rob Dawson, can be used to display exact, human-readable representations of date/time ranges

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
1
2
3
4

# Recur

npm install moment-recur
1

If you need to work with recurring dates, you can use Casey Trimm's plugin moment-recur.

This plugin will allow you to create length-based intervals (days, weeks, etc.) and calendar-based intervals (daysOfMonth, monthsOfYear, etc.).

It provides a matches function to test whether a date recurs according to the rules set, as well as generator functions to get the next and previous dates in a series.

The repository, documentation, and many more examples can be found at https://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"]
1
2
3
4
5
6
7

# Parse Date Format

npm install moment-parseformat
1

This plugin extracts the format of a date/time string.

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

That allows to create smart date inputs that let your users set a Date/Time and lets you extract the user's preferred format for future usage. Find an example usage of it at minutes.io.

The Plugin has been authored by @gr2m. Links: Demo | Source

# Java DateFormat Parser

npm install moment-jdateformatparser
1

If you want to work with the java.text.DateFormat you can use this plugin.

For example,

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"
1
2

The repository is located at github.com/MadMG/moment-jdateformatparser

# Hijri Calendar

npm install moment-hijri
1

If you want to work with Hijri calendar then you can use moment-hijri plugin. moment-hijri is a moment plugin for the Hijri lunar calendar based on Umm al-Qura calculations. This plugin is developed by Suhail Alkowaileet.
如果要使用回历日历,则可以使用moment-hijri插件。 moment-hijri是基于Umm al-Qura计算得出的Hijri阴历的矩插件。该插件由Suhail Alkowaileet开发。

When you install it, it will wrap moment and you will be able to parse Hijri dates. Here is a short example:

m = moment('1410/8/28', 'iYYYY/iM/iD'); // Parse a Hijri date.
m.format('iYYYY/iM/iD [is] YYYY/M/D'); // 1410/8/28 is 1990/3/25
1
2

The repository is located at https://github.com/xsoh/moment-hijri.

# Transform

bower install moment-transform
1

moment-transform is a plugin that manipulated dates through patterns. You can use basic operations –set/add/substract– on individual parts (hours, month, …) of a Moment instance.

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
1
2
3

Optional parameters lets you specify custom patterns and force strict pattern usage (non-alphabetic characters are not mandatory in passed string by default).

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

You can see it live there while the repository is here.