momentjs

Getting started with momentjs

Remarks#

This section provides an overview of what momentjs is, and why a developer might want to use it.

It should also mention any large subjects within momentjs, and link out to the related topics. Since the Documentation for momentjs is new, you may need to create initial versions of those related topics.

Installation or Setup

Moment is a javascript library that was designed to make working with dates and times less time-consuming and more intuitive.
You can easily start using this library by installing it in you web-app by using one of the following guides.

Browser

You can either download the JS file from the official website or use cdnjs.com.

With local JS file

<script src="moment.js"></script>
<script>
    moment().format();
</script>

With CDN

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
<script>
    moment().format();
</script>

Node.js

npm install moment

Moment should be included inside the node_modules directory, Then add it to your script

var moment = require('moment');
moment().format();

Bower

bower install --save moment

To test if you site or web application is properly using the moment.js script, open console (F12 on the keyboard) and type moment, the console should print the moment function if it was included.

General usage

The way Moment uses dates and times is by wrapping the existing Date() object in a moment() object and specifying useful and intuitive methods on this object.

Format Dates

moment().format('MMMM Do YYYY, h:mm:ss a'); // August 4th 2016, 10:41:45 am
moment().format('dddd');                    // Thursday
moment().format("MMM Do YY");               // Aug 4th 16
moment().format('YYYY [escaped] YYYY');     // 2016 escaped 2016
moment().format();                          // 2016-08-04T10:41:45+02:00

Relative Time

moment("20111031", "YYYYMMDD").fromNow(); // 5 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 4 years ago
moment().startOf('day').fromNow();        // 11 hours ago
moment().endOf('day').fromNow();          // in 13 hours
moment().startOf('hour').fromNow();       // 42 minutes ago

Calendar Time

moment().subtract(10, 'days').calendar(); // 07/25/2016
moment().subtract(6, 'days').calendar();  // Last Friday at 10:42 AM
moment().subtract(3, 'days').calendar();  // Last Monday at 10:42 AM
moment().subtract(1, 'days').calendar();  // Yesterday at 10:42 AM
moment().calendar();                      // Today at 10:42 AM
moment().endOf('day');                    // Today at 23:59 AM
moment().add(1, 'days').calendar();       // Tomorrow at 10:42 AM
moment().add(3, 'days').calendar();       // Sunday at 10:42 AM
moment().add(10, 'days').calendar();      // 08/14/2016

Multiple Locale Support

moment.locale();         // en
moment().format('LT');   // 10:43 AM
moment().format('LTS');  // 10:43:14 AM
moment().format('L');    // 08/04/2016
moment().format('l');    // 8/4/2016
moment().format('LL');   // August 4, 2016
moment().format('ll');   // Aug 4, 2016
moment().format('LLL');  // August 4, 2016 10:43 AM
moment().format('lll');  // Aug 4, 2016 10:43 AM
moment().format('LLLL'); // Thursday, August 4, 2016 10:43 AM
moment().format('llll'); // Thu, Aug 4, 2016 10:43 AM

Turn a Date object into and from a moment object

To turn a Javascript Date object into a moment (moment object) just call moment and pass the Date as a argument

moment(new Date());
// Moment {_isAMomentObject: true, _i: Sun Jul 31 2016 11:08:02 GMT+0300 (Jerusalem Daylight Time), _isUTC: false, _pf: Object, _locale: Locale…}

To turn the moment back to a Javascript Date use the .toDate() method

var now = new Date();
var mom = moment(now)
//undefined
mom
// Moment {_isAMomentObject: true, _i: Sun Jul 31 2016 11:10:32 GMT+0300 (Jerusalem Daylight Time), _isUTC: false, _pf: Object, _locale: Locale…}
mom.toDate()
// Sun Jul 31 2016 11:10:32 GMT+0300 (Jerusalem Daylight Time)

Calculating and manipulating dates

If you have a moment object you can use add and substract to manipulate it or set any property of the time directly

 moment("2016-01-01").add(1, 'year').format('YYYY-MM-DD')
 // -> "2017-01-01"

Or use .day(), .month(), .year(), .seconds(), .milliseconds() to set those values directly. Note that the arguments passed are 0-indexed.

 moment("2016-01-01").month(4).day(5).format('YYYY-MM-DD')
// -> "2016-05-06"

Date parsing

You can use moment to parse date strings.

By default moment tries to parse the date as an ISO-8601 string and if that does not work falls back to the browsers new Date(). Since the way that browsers construct dates varies it is best to try not to fall back to this.

moment('2016-02-04').format('YYYY-MM-DD')
// ->'2016-02-04'

If you have a format other then ISO 8601 it is best to pass the format string as a second argument to moment.

moment('04-02-2016', 'MM-DD-YYYY').format('YYYY-MM-DD')
// ->'2016-02-04'

This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow