The lastest version of this document is available on Github > datetime-object

This Section

toString

new DateTime().toString(); new DateTime().toString(String); This is the most robust display option. It takes a string of tokens and replaces them with their corresponding values. new DateTime().toString(); new DateTime().toString("dddd, MMMM Do YYYY, h:mm:ss a"); new DateTime().toString("ddd, hA");

String Format

Token Output
**Month** M 1 2 ... 11 12
Mo 1st 2nd ... 11th 12th
MM 01 02 ... 11 12
MMM Jan Feb ... Nov Dec
MMMM January February ... November December
**Quarter** Q 1 2 3 4
Qo 1st 2nd 3rd 4th
**Day of Month** D 1 2 ... 30 31
Do 1st 2nd ... 30th 31st
DD 01 02 ... 30 31
**Day of Year** DDD 1 2 ... 364 365
DDDo 1st 2nd ... 364th 365th
DDDD 001 002 ... 364 365
**Day of Week** d 0 1 ... 5 6
do 0th 1st ... 5th 6th
dd Su Mo ... Fr Sa
ddd Sun Mon ... Fri Sat
dddd Sunday Monday ... Friday Saturday
**Day of Week (Locale)** e 0 1 ... 5 6
**Day of Week (ISO)** E 1 2 ... 6 7
**Week of Year** w 1 2 ... 52 53
wo 1st 2nd ... 52nd 53rd
ww 01 02 ... 52 53
**Week of Year (ISO)** W 1 2 ... 52 53
Wo 1st 2nd ... 52nd 53rd
WW 01 02 ... 52 53
**Year** YY 70 71 ... 29 30
YYYY 1970 1971 ... 2029 2030
Y 1970 1971 ... 9999 +10000 +10001 *Note:** This complies with the ISO 8601 standard for dates past the year 9999
**Week Year** gg 70 71 ... 29 30
gggg 1970 1971 ... 2029 2030
**Week Year (ISO)** GG 70 71 ... 29 30
GGGG 1970 1971 ... 2029 2030
**AM/PM** A AM PM
a am pm
**Hour** H 0 1 ... 22 23
HH 00 01 ... 22 23
h 1 2 ... 11 12
hh 01 02 ... 11 12
k 1 2 ... 23 24
kk 01 02 ... 23 24
**Minute** m 0 1 ... 58 59
mm 00 01 ... 58 59
**Second** s 0 1 ... 58 59
ss 00 01 ... 58 59
**Fractional Second** S 0 1 ... 8 9
SS 00 01 ... 98 99
SSS 000 001 ... 998 999
SSSS ... SSSSSSSSS 000 [0..] 001 [0..] ... 998 [0..] 999 [0..]
**Time Zone** z or zz EST CST ... MST PST **Note:** as of **1.6.0**, the z/zz format tokens have been deprecated from plain DateTime objects. [Read more about it here.](https://github.com/DateTime/DateTime/issues/162) However, they _do_ work if you are using a specific time zone with the DateTime-timezone addon.
Z -07:00 -06:00 ... +06:00 +07:00
ZZ -0700 -0600 ... +0600 +0700
**Unix Timestamp** X 1360013296
**Unix Millisecond Timestamp** x 1360013296123

humanize

Returns a string representing the duration between the date and now for a human. By default, the return string is suffixless. If you want a suffix, pass in true as seen below.
DateTime.today().humanize();

Localized formats

Because preferred formatting differs based on locale, there are a few tokens that can be used to format a DateTime based on its locale. There are upper and lower case variations on the same formats. The lowercase version is intended to be the shortened version of its uppercase counterpart.
**Time** LT 8:30 PM
**Time with seconds** LTS 8:30:25 PM
**Month numeral, day of month, year** L 09/04/1986
l 9/4/1986
**Month name, day of month, year** LL September 4, 1986
ll Sep 4, 1986
**Month name, day of month, year, time** LLL September 4, 1986 8:30 PM
lll Sep 4, 1986 8:30 PM
**Month name, day of month, day of week, year, time** LLLL Thursday, September 4, 1986 8:30 PM
llll Thu, Sep 4, 1986 8:30 PM

Escaping characters

To escape characters in format strings, you can wrap the characters in square brackets. new DateTime().toString('[today] dddd');

Similarities and differences with LDML

**Note:** While these date formats are very similar to LDML date formats, there are a few minor differences regarding day of month, day of year, and day of week. For a breakdown of a few different date formatting tokens across different locales, see this chart of date formatting tokens.

Formatting speed

To compare DateTime.js formatting speed against other libraries, check out this comparison against other libraries.

Other tokens

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

Default format calling

`DateTime#toString` without a format will default to `DateTime.defaultFormat`. Out of the box, `DateTime.defaultFormat` is the ISO8601 format `YYYY-MM-DDTHH:mm:ssZ`. when in UTC mode, the default format is governed by `DateTime.defaultFormatUtc` which is in the format `YYYY-MM-DDTHH:mm:ss [Z]`. This returns `Z` as the offset, instead of `+00:00`. In certain instances, a local timezone (such as `Atlantic/Reykjavik`) may have a zero offset, and will be considered to be UTC. In such cases, it may be useful to set `DateTime.defaultFormat` and `DateTime.defaultFormatUtc` to use the same formatting.