extends html

block styles
  link(rel="stylesheet", href="../css/style.css?_=" + builddate)
  title Moment.js Documentation

block scripts
  script(src="../js/docs.min.js?_=" + builddate)

block content
    #docnav
      h2
        a(href="#/get-it")
          span Get it
      ul
        li
          a(href="#/get-it/github") Github
        li
          a(href="#/get-it/npm") npm
      h2
        a(href="#/use-it")
          span Use it
      ul
        li
          a(href="#/use-it/node") In NodeJS
        li
          a(href="#/use-it/browser") In the browser
      h2
        a(href="#/parsing")
          span Parsing
      ul
        li
          a(href="#/parsing/date") Javascript Date Object
        li
          a(href="#/parsing/unix") Unix Timestamp
        li
          a(href="#/parsing/string") String
        li
          a(href="#/parsing/string+format") String + Format
        li
          a(href="#/parsing/string+formats") String + Formats
        li
          a(href="#/parsing/now") Now
        li
          a(href="#/parsing/array") Javascript Array
      h2
        a(href="#/manipulation")
          span Manipulation
      ul
        li
          a(href="#/manipulation/add") Add
        li
          a(href="#/manipulation/subtract") Subtract
        li
          a(href="#/manipulation/seconds") Seconds
        li
          a(href="#/manipulation/minutes") Minutes
        li
          a(href="#/manipulation/hours") Hours
        li
          a(href="#/manipulation/date") Date
        li
          a(href="#/manipulation/month") Month
        li
          a(href="#/manipulation/year") Year
      h2
        a(href="#/display")
          span Display
      ul
        li
          a(href="#/display/format") Formatted date
        li
          a(href="#/display/from") Time from another moment
        li
          a(href="#/display/fromNow") Time from now
        li
          a(href="#/display/diff") Difference
        li
          a(href="#/display/native") Native Date
        li
          a(href="#/display/valueOf") Value
        li
          a(href="#/display/seconds") Seconds
        li
          a(href="#/display/minutes") Minutes
        li
          a(href="#/display/hours") Hours
        li
          a(href="#/display/date") Date
        li
          a(href="#/display/day") Day
        li
          a(href="#/display/month") Month
        li
          a(href="#/display/year") Year
        li
          a(href="#/display/leapyear") Leap Year
      h2
        a(href="#/i18n")
          span I18N
      ul
        li
          a(href="#/i18n/lang") Changing languages
        li
          a(href="#/i18n/node") Loading languages in NodeJS
        li
          a(href="#/i18n/browser") Loading languages in the browser
        li
          a(href="#/i18n/add") Adding your language to Moment.js
      h2
        a(href="#/custom")
          span I18N
      ul
        li
          a(href="#/custom/months") Month Names
        li
          a(href="#/custom/monthsShort") Month Abbreviations
        li
          a(href="#/custom/weekdays") Weekday Names
        li
          a(href="#/custom/weekdaysShort") Weekday Abbreviations
        li
          a(href="#/custom/longDateFormats") Long Date Formats
        li
          a(href="#/custom/relativeTime") Relative Time
        li
          a(href="#/custom/meridiem") AM/PM
        li
          a(href="#/custom/ordinal") Ordinal
    #docs
      h1 Moment.js Documentation
      p A lightweight javascript date library for parsing, manipulating, and formatting dates.


      a(name="/get-it")
      h2
        span Where to get it


      a(name="/get-it/github")
      h3
        span Github
      a.btn.cupid-green(href="https://raw.github.com/timrwood/moment/" + version + "/moment.min.js") 
        strong Production 
        span.version= 'Version ' + version
        span.filesize= minsize + ' minified &amp; gzipped'
      a.btn.minimal(href="https://raw.github.com/timrwood/moment/" + version + "/moment.js") 
        strong Development 
        span.version= 'Version ' + version
        span.filesize= srcsize + ' full source + comments'
      p You can also clone the project with Git by running:
      pre git clone git://github.com/timrwood/moment


      a(name="/get-it/npm")
      h3
        span npm
      pre npm install moment


      a(name="/use-it")
      h2
        span Where to use it
      p Moment was designed to work in both the browser and in NodeJS. All code will work in both environments. All unit tests are run in both environments.


      a(name="/use-it/node")
      h3
        span In NodeJS
      pre var moment = require('moment');\n
        | moment().add('hours', 1).fromNow(); // "1 hour ago"


      a(name="/use-it/browser")
      h3
        span In the browser
      pre &lt;script src="moment.min.js">&lt;/script>\n
        | moment().add('hours', 1).fromNow(); // "1 hour ago"


      a(name="/parsing")
      h2
        span Parsing
      p Instead of modifying the native 
        code Date.prototype
        | , Moment.js creates a wrapper for the 
        code Date
        | object.
      p Note: The Moment.js prototype is exposed through 
        code moment.fn
        | . If you want to add your own functions, that is where you would put them.
      p To get this wrapper object, simply call 
        code moment()
        | with one of the supported input types.


      a(name="/parsing/date")
      h3
        span Javascript Date Object
      p A native Javascript Date object.
      pre var day = new Date(2011, 9, 16);\n
        | var dayWrapper = moment(day); 
      pre var otherDay = moment(new Date(2020, 3, 7));
      p This is the fastest way to get a Moment.js wrapper.


      a(name="/parsing/unix")
      h3
        span Unix Timestamp
      p An integer value representing the number of milliseconds since 1 January 1970 00:00:00 UTC.
      pre var day = moment(1318781876406);


      a(name="/parsing/string")
      h3
        span String
      p A string that can be parsed by 
        code Date.parse
        | .
      pre var day = moment("Dec 25, 1995");
      p Browser support for this is somewhat inconsistent. If you are not getting consistent results, you can try using String + Format.


      a(name="/parsing/string+format")
      h3
        span String + Format
      p An input string and a format string
      pre var day = moment("12-25-1995", "MM-DD-YYYY");
      p The format parsing tokens are similar to the tokens for 
        code moment.fn.format
        | .
      p The parser ignores non-alphanumeric characters, so both 
        code moment("12-25-1995", "MM-DD-YYYY")
        | and 
        code moment("12\25\1995", "MM-DD-YYYY")
        | will return the same thing.
      table
        tbody
          tr
            th Input
            th Output
          tr
            td M or MM
            td Month
          tr
            td D or DD
            td Day of month
          tr
            td DDD or DDDD
            td Day of year
          tr
            td YY
            td 2 digit year (if greater than 70, will return 1900's, else 2000's)
          tr
            td YYYY
            td 4 digit year
          tr
            td a or A
            td AM/PM
          tr
            td H, HH, h, or hh
            td 24 hour (for 12 hour time, use in conjunction with a or A)
          tr
            td m or mm
            td Minutes
          tr
            td s or ss
            td Seconds
      p
        strong Important:
        | Parsing a string with a format is by far the slowest method of creating a date. 
        | If you have the ability to change the input, it is much faster (~15x) to use Unix timestamps.


      a(name="/parsing/string+formats")
      h3
        span String + Formats
      p An input string and an array of format strings.
      p This is the same as String + Format, only it will try to match the input to multiple formats.
      pre var day = moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);
      p This approach is fundamentally problematic in cases like the following.
      pre var day = moment("05-06-1995", ["MM-DD-YYYY", "DD-MM-YYYY"]); // June 5th or May 6th?
      p
        strong Important:
        | THIS IS SLOW. This should only be used as a last line of defense.


      a(name="/parsing/now")
      h3
        span Now
      p To get the current time, just call 
        code moment()
        | with no parameters.
      pre var now = moment();
      p This is essentially the same as calling 
        code moment(new Date())
        | .


      a(name="/parsing/array")
      h3
        span Javascript Array
      p An array mirroring the parameters passed into 
        a(href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/UTC") Date.UTC()
      pre [year, month = 0, date = 1, hours = 0, minutes = 0, seconds = 0, milliseconds = 0] 
        | var day = moment([2010, 1, 14, 15, 25, 50, 125]); // February 14th, 3:25:50.125 PM
      p Any value past the year is optional, and will default to the lowest possible number.
      pre var day = moment([2010]); // January 1st \n
        | var day = moment([2010, 6]); // July 1st 
        | var day = moment([2010, 6, 10]); // July 10th


      a(name="/manipulation")
      h2
        span Manipulation
      p Once you have a Moment.js wrapper object, you may want to manipulate it in some way. There are a number of 
        code moment.fn
        | methods to help with this.
      p All manipulation methods are chainable, so you can do crazy things like this.
      pre moment().add('days', 7).subtract('months', 1).year(2009).hours(0).minutes(0).seconds(0);


      a(name="/manipulation/add")
      h3 
        span Adding Time
      p This is a pretty robust function for adding time to an existing date. 
        | To add time, pass the key of what time you want to add, and the amount you want to add.
      pre moment().add('days', 7);
      p There are some shorthand keys as well if you're into that whole brevity thing.
      pre moment().add('d', 7);
      table
        tbody
          tr
            th Key
            th Shorthand
          tr
            td years
            td y
          tr
            td months
            td M
          tr
            td weeks
            td w
          tr
            td days
            td d
          tr
            td hours
            td h
          tr
            td minutes
            td m
          tr
            td seconds
            td s
          tr
            td milliseconds
            td ms
      p If you want to add multiple different keys at the same time, you can pass them in as an object literal.
      pre moment().add('days', 7).add('months', 1); // with chaining \n
        | moment().add({days:7,months:1}); // with object literal
      p There are no upper limits for the amounts, so you can overload any of the parameters.
      pre moment().add('milliseconds', 1000000); // a million milliseconds \n
        | moment().add('days', 360); // 360 days
      h4 Special considerations for months and years
      p If the day of the month on the original date is greater than the number of days in the final month, 
        | the day of the month will change to the last day in the final month.
      p Example:
      pre moment([2010, 0, 31]);                  // January 31 \n
        | moment([2010, 0, 31]).add('months', 1); // February 28


      a(name="/manipulation/subtract")
      h3
        span Subtracting Time
      p This is exactly the same as 
        code moment.fn.add
        | , only instead of adding time, it subtracts time.
      pre moment().subtract('days', 7);


      a(name="/manipulation/seconds")
      h3
        span Seconds
      p There are a number of shortcut getter and setter functions. 
        | Much like in jQuery, calling the function without paremeters causes it to function as a getter, 
        | and calling with a parameter causes it to function as a setter.
      p These map to the corresponding function on the native 
        code Date
        | object.
      pre moment().seconds(30) === new Date().setSeconds(30);\n
        | moment().seconds() === new Date().getSeconds();


      a(name="/manipulation/minutes")
      h3
        span Minutes
      pre moment().minutes(30); // set the minutes to 30


      a(name="/manipulation/hours")
      h3
        span Hours
      pre moment().hours(12); // set the hours to 12


      a(name="/manipulation/date")
      h3
        span Date
      pre moment().date(5); // set the date to 5


      a(name="/manipulation/month")
      h3
        span Month
      pre moment().month(5); // set the month to June


      a(name="/manipulation/year")
      h3
        span Year
      pre moment().year(1984); // set the year to 1984


      a(name="/display")
      h2
        span Display
      p Once parsing and manipulation are done, you need some way to display the moment. Moment.js offers many ways of doing that.


      a(name="/display/format")
      h3
        span Formatted Date
      p The most robust display option is 
        code moment.fn.format
        | . It takes a string of tokens and replaces them with their corresponding values from the Date object.
      pre var date = new Date(2010, 1, 14, 15, 25, 50, 125);\n
        | moment(date).format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
        | moment(date).format("ddd, hA");                       // "Sun, 3PM"
      table
        tbody
          tr
            th Token
            th Output
          tr
            td
              b Month
            td
          tr
            td M
            td 1 2 ... 11 12
          tr
            td Mo
            td 1st 2nd ... 11th 12th
          tr
            td MM
            td 01 02 ... 11 12
          tr
            td MMM
            td Jan Feb ... Nov Dec
          tr
            td MMMM
            td January February ... November December
          tr
            td
              b Day of Month
            td
          tr
            td D
            td 1 2 ... 30 30
          tr
            td Do
            td 1st 2nd ... 30th 31st
          tr
            td DD
            td 01 02 ... 30 31
          tr
            td
              b Day of Year
            td
          tr
            td DDD
            td 1 2 ... 364 365
          tr
            td DDDo
            td 1st 2nd ... 364th 365th
          tr
            td DDDD
            td 001 002 ... 364 365
          tr
            td
              b Day of Week
            td
          tr
            td d
            td 0 1 ... 5 6
          tr
            td do
            td 0th 1st ... 5th 6th
          tr
            td ddd
            td Sun Mon ... Fri Sat
          tr
            td dddd
            td Sunday Monday ... Friday Saturday
          tr
            td
              b Week of Year
            td
          tr
            td w
            td 1 2 ... 52 53
          tr
            td wo
            td 1st 2nd ... 52nd 53rd
          tr
            td ww
            td 01 02 ... 52 53
          tr
            td
              b Year
            td
          tr
            td YY
            td 70 71 ... 29 30
          tr
            td YYYY
            td 1970 1971 ... 2029 2030
          tr
            td
              b AM/PM
            td
          tr
            td A
            td AM PM
          tr
            td a
            td am pm
          tr
            td <b>Hour</b>
            td
          tr
            td H
            td 0 1 ... 22 23
          tr
            td HH
            td 00 01 ... 22 23
          tr
            td h
            td 1 2 ... 11 12
          tr
            td hh
            td 01 02 ... 11 12
          tr
            td <b>Minute</b>
            td
          tr
            td m
            td 0 1 ... 58 59
          tr
            td mm
            td 00 01 ... 58 59
          tr
            td
              b Second
            td
          tr
            td s
            td 0 1 ... 58 59
          tr
            td ss
            td 00 01 ... 58 59
          tr
            td <b>Timezone</b>
            td
          tr
            td z
            td EST CST ... MST PST
          tr
            td <b>Localized date format</b>
            td
          tr
            td L
            td 07/10/1986
          tr
            td LL
            td July 10 1986
          tr
            td LLL
            td July 10 1986 8:30 PM
          tr
            td LLLL
            td Saturday, July 10 1986 8:30 PM


      a(name="/display/from")
      h3
        span Time from another moment
      p Another common way of displaying time, sometimes called timeago, is handled by 
        code moment.fn.from
        | .
      pre var a = moment([2007, 0, 29]);\n
        | var b = moment([2007, 0, 28]);
        | a.from(b) // "a day ago"
      p The first parameter is anything you can pass to 
        code moment()
        | or a Moment.js object.
      pre var a = moment([2007, 0, 29]);\n
        | var b = moment([2007, 0, 28]);
        | a.from(b);                     // "a day ago"
        | a.from([2007, 0, 28]);         // "a day ago"
        | a.from(new Date(2007, 0, 28)); // "a day ago"
        | a.from("1-28-2007");           // "a day ago"
      p NOTE: Because it only accepts one parameter to pass in the date info, 
        | if you need to use String + Format or String + Formats, you should create a Moment.js 
        | object first and then call 
        code moment.fn.from
      pre var a = moment();\n
        | var b = moment("10-10-1900", "MM-DD-YYYY");
        | a.from(b);
      p If you pass 
        code true
        | as the second parameter, you can get the value without the suffix. This is useful wherever you need to have a human readable length of time.
      pre var start = moment([2007, 0, 5]);\n
        | var end = moment([2007, 0, 10]);
        | start.from(end);       // "in 5 days"
        | start.from(end, true); // "5 days"
      p The base strings are customized by 
        code moment.lang
        | or by modifying the values directly using 
        code moment.relativeTime
        | .
      p The breakdown of which string is displayed when is outlined in the table below.
      table
        thead
          tr
            th Range
            th Key
            th Sample Output
        tbody
          tr
            td 0 to 45 seconds
            td s
            td seconds ago
          tr
            td 45 to 90 seconds
            td m
            td a minute ago
          tr
            td 90 seconds to 45 minutes
            td mm
            td 2 minutes ago ... 45 minutes ago
          tr
            td 45 to 90 minutes
            td h
            td an hour ago
          tr
            td 90 minutes to 22 hours 
            td hh
            td 2 hours ago ... 22 hours ago
          tr
            td 22 to 36 hours
            td d
            td a day ago
          tr
            td 36 hours to 25 days
            td dd
            td 2 days ago ... 25 days ago
          tr
            td 25 to 45 days
            td M
            td a month ago
          tr
            td 45 to 345 days
            td MM
            td 2 months ago ... 11 months ago
          tr
            td 345 to 547 days (1.5 years)
            td y
            td a year ago
          tr
            td 548 days+
            td yy
            td 2 years ago ... 20 years ago


      a(name="/display/fromNow")
      h3
        span Time from now
      p This is just a map to 
        code moment.fn.from(new Date())
      pre moment([2007, 0, 29]).fromNow(); // 4 years ago
      p Like 
        code moment.fn.from
        | , if you pass 
        code true
        | as the second parameter, you can get the value without the suffix.
      pre moment([2007, 0, 29]).fromNow();     // 4 years ago\n
        | moment([2007, 0, 29]).fromNow(true); // 4 years


      a(name="/display/diff")
      h3
        span Difference
            <p>To get the difference in milliseconds, use <code>moment.fn.diff</code> like you would use <code>moment.fn.from</code>.</p>
      pre var a = moment([2007, 0, 29]);\n
        | var b = moment([2007, 0, 28]);
        | a.diff(b) // 86400000
      p To get the difference in another unit of measurement, pass that measurement as the second argument.
      pre var a = moment([2007, 0, 29]);\n
        | var b = moment([2007, 0, 28]);
        | a.diff(b, 'days') // 1
      p The supported measurements are 
        code "years", "months", "weeks", "days", "hours", "minutes", and "seconds"
      p By default, 
        code moment.fn.diff
        | will return a rounded number. If you want the floating point number, pass 
        code true
        | as the third argument.
      pre var a = moment([2007, 0]);\n
        | var b = moment([2008, 5]);
        | a.diff(b, 'years')       // 1
        | a.diff(b, 'years', true) // 1.5


      a(name="/display/native")
      h3
        span Native Date
      p To get the native Date object that Moment.js wraps, use 
        code moment.fn.native
        | .
      pre moment([2007, 0, 29]).native(); // returns native Date object


      a(name="/display/valueOf")
      h3
        span Value
      p
        code moment.fn.valueOf
        | simply outputs the unix timestamp.
      pre moment(1318874398806).valueOf(); // 1318874398806


      a(name="/display/seconds")
      h3
        span Seconds
      p These are the getters mentioned in the 
        a(href="#/manipulation/seconds") Manipulation
        | section above.
      p These map to the corresponding function on the native 
        code Date
        | object.
      pre moment().seconds() === new Date().getSeconds();


      a(name="/display/minutes")
      h3
        span Minutes
      pre moment().minutes(); // get the minutes


      a(name="/display/hours")
      h3
        span Hours
      pre moment().hours(); // get the hours


      a(name="/display/date")
      h3
        span Date
      pre moment().date(); // get the date (0 - 31)


      a(name="/display/day")
      h3
        span Day
      pre moment().day(); // get the day (0 - 6)


      a(name="/display/month")
      h3
        span Month
      pre moment().month(); // get the month


      a(name="/display/year")
      h3
        span Year
      pre moment().year(); // get the year


      a(name="/display/leapyear")
      h3
        span Leap Year
      p
        code moment.fn.isLeapYear
        | returns true if that year is a leap year, and false if it is not.
      pre moment([2000]).isLeapYear() // true\n
        | moment([2001]).isLeapYear() // false\n
        | moment([2100]).isLeapYear() // false


      a(name="/i18n")
      h2
        span I18N
      p Moment.js has pretty robust support for internationalization. You can load multiple languages onto the same instance and easily switch between them.


      a(name="/i18n/lang")
      h3
        span Changing languages
      p By default, Moment.js comes with English language strings. If you need other languages, you can load them into Moment.js for later use.
      p To load a language, pass the key and the string values to 
        code moment.lang
        | .
      p Note: More details on each of the parts of the language bundle can be found in the 
        a(href="#/custom") customization
        |  section.
      pre moment.lang('fr', {\n
        |     months : "Janvier_Février_Mars_Avril_Mai_Juin_Juillet_Aout_Septembre_Octobre_Novembre_Décembre".split("_"),
        |     monthsShort : "Jan_Fev_Mar_Avr_Mai_Juin_Juil_Aou_Sep_Oct_Nov_Dec".split("_"),
        |     weekdays : "Dimanche_Lundi_Mardi_Mercredi_Jeudi_Vendredi_Samedi".split("_"),
        |     weekdaysShort : "Dim_Lun_Mar_Mer_Jeu_Ven_Sam".split("_"),
        |     longDateFormat : { 
        |         L : "DD/MM/YYYY",
        |         LL : "D MMMM YYYY",
        |         LLL : "D MMMM YYYY HH:mm",
        |         LLLL : "dddd, D MMMM YYYY HH:mm"
        |     },
        |     relativeTime : {
        |         future : "in %s",
        |         past : "il y a %s",
        |         s : "secondes",
        |         m : "une minute",
        |         mm : "%d minutes",
        |         h : "une heure",
        |         hh : "%d heures",
        |         d : "un jour",
        |         dd : "%d jours",
        |         M : "un mois",
        |         MM : "%d mois",
        |         y : "une année",
        |         yy : "%d années"
        |     },
        |     ordinal : function (number) {
        |         return (~~ (number % 100 / 10) === 1) ? 'er' : 'ème';
        |     }
        | });
      p Once you load a language, it becomes the active language. To change active languages, simply call 
        code moment.lang
        | with the key of a loaded language.
      pre moment.lang('fr');
        | moment(1316116057189).fromNow() // il y a une heure
        | moment.lang('en');
        | moment(1316116057189).fromNow() // an hour ago


      a(name="/i18n/node")
      h3
        span Loading languages in NodeJS
      p Loading languages in NodeJS is super easy. If there is a language file in 
        code moment/lang/
        | named after that key, the first call to 
        code moment.lang
        | will load it.
      pre var moment = require('moment');\n
        | moment.lang('fr');\n
        | moment(1316116057189).fromNow(); // il y a une heure
      p Right now, there is only support for English, French, Italian, and Portuguese. 
        | If you want your language supported, create a pull request or send me an email with the 
        a(href="#/i18n/add") required files
        | .


      a(name="/i18n/browser")
      h3
        span Loading languages in the browser
      p Loading languages in the browser just requires you to include the language files.
      pre &lt;script src="moment.min.js">&lt;/script>\n
        | &lt;script src="lang/fr.js">&lt;/script>
        | &lt;script src="lang/pt.js">&lt;/script>
      p There are minified versions of each of these languages. There is also a minified version of all of the languages bundled together.
      pre &lt;script src="moment.min.js">&lt;/script>
        | &lt;script src="lang/all.min.js">&lt;/script>
      p Ideally, you would bundle all the files you need into one file to minimize http requests.
      pre &lt;script src="moment-fr-it.min.js">&lt;/script>


      a(name="/i18n/add")
      h3
        span Adding your language to Moment.js
      p To add your language to Moment.js, submit a pull request with both a language file and a test file. You can find examples in 
        code moment/lang/fr.js
        | and 
        code moment/test/lang/fr.js
      p To run the tests, do 
        code node build
        | .
      p If there are no errors building, then do 
        code node test
        | or open 
        code moment/test/index.html
        | .
      p If all the tests pass, submit that pull request, and thank you for contributing!


      a(name="/custom")
      h2
        span Customization
      p If you don't need i18n support, you can manually override the customization values. 
        | However, any calls to 
        code moment.lang
        | will override them. It is probably safer to create a language for your specific customizations than to override these values manually.


      a(name="/custom/months")
      h3
        span Month Names
      p 
        code moment.months
        | should be an array of the month names.
      pre moment.months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];


      a(name="/custom/monthsShort")
      h3
        span Month Abbreviations
      p
        code moment.monthsShort
        | should be an array of the month abbreviations.
      pre moment.monthsShort = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];


      a(name="/custom/weekdays")
      h3
        span Weekday Names
      p
        code moment.weekdays
        | should be an array of the weekdays names.
      pre moment.weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];


      a(name="/custom/weekdaysShort")
      h3
        span Weekday Abbreviations
      p
        code moment.weekdaysShort
        | should be an array of the weekdays abbreviations.
      pre moment.weekdaysShort = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];


      a(name="/custom/longDateFormats")
      h3
        span Long Date Formats
      p
        code moment.longDateFormat
        | should be an object containing a key/value pair for each long date format (L, LL, LLL, LLLL).
      pre moment.longDateFormat = { \n
        |     L: "MM/DD/YYYY",
        |     LL: "MMMM D YYYY",
        |     LLL: "MMMM D YYYY h:mm A",
        |     LLLL: "dddd, MMMM D YYYY h:mm A"
        | };


      a(name="/custom/relativeTime")
      h3
        span Relative Time
      p
        code moment.relativeTime
        |  should be an object of the replacement strings for 
        code moment.fn.from
        | .
      pre moment.relativeTime = {\n
        |     future: "in %s",
        |     past: "%s ago",
        |     s: "seconds",
        |     m: "a minute",
        |     mm: "%d minutes",
        |     h: "an hour",
        |     hh: "%d hours",
        |     d: "a day",
        |     dd: "%d days",
        |     M: "a month",
        |     MM: "%d months",
        |     y: "a year",
        |     yy: "%d years"
        | };
      p
        code future
        |  refers to the prefix/suffix for future dates, and 
        code past
        |  refers to the prefix/suffix for past dates. For all others, a single character refers to the singular, and an double character refers to the plural.
      p If a language requires additional processing for a token, It can set the token as a function with the following signature. 
        | The function should return a string.
      pre function(number, withoutSuffix, key) {\n
        |     return string;
        | }
      p The 
        code key
        |  variable refers to the replacement key in the 
        code relativeTime 
        |  object. (eg. 's', 'm', 'mm', 'h', etc.)
      p The 
        code number
        |  variable refers to the number of units for that key. For 'm', the number is the number of minutes, etc.
      p The 
        code withoutSuffix
        |  variable will be true if the token will be displayed without a suffix, and false if it will be displayed with a suffix. 
        | (The reason for the inverted logic is because the default behavior is to display with the suffix.)


      a(name="/custom/meridiem")
      h3
        span AM/PM
      p
        code moment.meridiem
        |  should be a map of upper and lowercase versions of am/pm.
      pre moment.meridiem = {\n
        |     am : 'am',
        |     AM : 'AM',
        |     pm : 'pm',
        |     PM : 'PM'
        | };

      a(name="/custom/ordinal")
      h3
        span Ordinal
      p
        code moment.ordinal
        |  should be a function that returns the ordinal for a given number.
      pre moment.ordinal = function (number) {\n
        |     var b = number % 10;
        |     return (~~ (number % 100 / 10) === 1) ? 'th' : 
        |         (b === 1) ? 'st' : 
        |         (b === 2) ? 'nd' : 
        |         (b === 3) ? 'rd' : 'th';
        | };
      p For more information on ordinal numbers, see 
        a(href="http://en.wikipedia.org/wiki/Ordinal_number_%28linguistics%29") wikipedia
      .footer