Javascript dates extended with dateformat
npm install date-plusJavascript dates extended with dateformat
- Tiny wrapper function to create dates
- returns normal Date objects extended with .format()
- uses the built-in date parser, fixes a parser annoyance in ES5
- unlike dateformat, format() doesn't throw if the date is invalid
- choice of language strings - currently de and en are included
``sh`
$ npm install date-plus
`javascript
var date = require('date-plus');
// parse using native javascript parser
var d = date('5/10/2015');
// format
var output = d.format('ddd, dd mmm yyyy HH:MM:ss Z');
// or use a predefined mask
var output = d.format('expiresHeaderFormat');
// shortcut for date(d).format(fmt) - 2nd arg format string
var output = date(d, fmt);
// non-truthy input means current date/time
var now = date('');
var d = date('inva/lid/date');
var isValid = d.valid; // false
var output = d.format(); // 'No Date'
// set language to german
date.lang('de');
// access dateformat masks
date.dateformat.masks.shortDate = ('yyyy.mm.dd');
`
| pattern | interpretation |
| :---------- | :------------------------------ |
| d | day |
| dd | day with leading 0 |
| ddd | day of week abbreviated |
| dddd | day of week full |
| m | month |
| mm | month with leading 0 |
| mmm | month abbreviated |
| mmmm | month full |
| yy | year 2 digit |
| yyyy | year 4 digit |
| h | hours (12) |
| hh | hours (12) with leading 0 |
| H | hours (24) |
| HH | hours (24) with leading 0 |
| M | minutes |
| MM | minutes with leading 0 |
| s | seconds |
| ss | seconds with leading 0 |
| l | milliseconds 3 digits |
| L | milliseconds 2 digits |
| t | a or p for am or pm |
| tt | am or pm |
| T | A or P for am or pm |
| TT | AM or PM |
| Z | US timezone or GMT-???? |
| o | UTC offset e.g. +1000 or -0230 |
| S | day suffix e.g. 'nd' for 2 |
| W | week in year |
| N | day in week |
| UTC:fmt | render UTC instead of local |
| mask name | interpretation |
| :-------------------- | :------------------------------ |
| default | ddd mmm dd yyyy HH:MM:ss |
| shortDate | m/d/yy |
| mediumDate | mmm d, yyyy |
| longDate | mmmm d, yyyy |
| fullDate | dddd, mmmm d, yyyy |
| shortTime | h:MM TT |
| mediumTime | h:MM:ss TT |
| longTime | h:MM:ss TT Z |
| isoDate | yyyy-mm-dd |
| isoTime | HH:MM:ss |
| isoDateTime | yyyy-mm-dd'T'HH:MM:sso |
| isoUtcDateTime | UTC:yyyy-mm-dd'T'HH:MM:ss'Z' |
| expiresHeaderFormat | ddd, dd mmm yyyy HH:MM:ss Z |
ES5 interprets strings matching yyyy-mm-dd as UTC even when running in other timezones.
E.g. 2015-9-15 is assumed to be midnight on that date in the local timezone
But 2015-10-15 is interpreted as midnight on that date in the UTC timezone because the date uses an ISO format and has a 2-digit month.
This is problematic e.g. for code parsing unpadded dates passed via JSON.
This module provides a small polyfill to parse yyyy-mm-dd` dates as local even in ES5.