datef is a Javascript date formatting library, both for browser and node.js.
- Can output: year, full year, month, day, hour, minutes, seconds, milliseconds and timezone — both zero padded and not
- Simple localization
- Built-in formats and easyly extensible
- Doesn't mess with built-in prototypes
- Acts as node.js and requirejs/amd module, and have
.noConflictmethod in case no module system is present (e.g. plain browser environment) - No external dependencies
- Contains predefined formats for some ISO8601 date and time representation
- Thoroughly annotated with jsdoc, so if your IDE/editor supports it, you may never need interrupt yourself from code
Node.js
npm install datef
var datef = require('datef'); datef('MM.YYYY');
Require.js
require.config({ paths: { 'datef': 'path/to/datef' } }) require(['datef'], function(datef){ datef('MM.YYYY'); });
Browser
<script src="datef.js"></script> <script> datef('MM.YYYY'); </script>
datef('dd.MM.YY', new Date()); // "13.08.13" datef('dd.MM.YY'); // second argument is optional; datef takes Date.now() if no date is provided var d = new Date(); d.setFullYear(2045); datef('dd.MM.YYYY', d); // "13.08.2045"
Node.js
datef.lang('ru'); datef('dd MMMM'); // 13 августа
Require.js
require.config({ paths: { 'datef': 'path/to/datef', 'datef_ru': 'path/to/datef_lang/ru' } }) require(['datef', 'datef_ru'], function(datef){ datef.lang('ru'); datef('dd MMMM'); // 13 августа });
Browser
<script src="datef.js"></script> <script src="lang/ru.js"></script> <script> datef.lang('ru'); datef('dd MMMM'); // 13 августа </script>
// predefined formats datef.formatters(); // ['ISODate','ISOTime','ISODateTime','ISODateTimeTZ'] datef('ISODateTimeTZ', d); // "2013-08-13T15:01:29 -04:00" // defining your own simple format datef.register('myFormat', 'd.M.YY'); datef('myFormat', d); // "13.8.13" // defining your own format with i10n datef.register('myI10nFormat', { 'en': 'MMMM dd, DD', 'ru': 'DD, dd MMMM', 'default': 'dd MMMM' }); datef('myI10nFormat', d); // "August 13, Tuesday" datef.lang('ru'); datef('myI10nFormat', d); // "Вторник, 13 августа" datef.lang('uk'); datef('myI10nFormat', d); // "13 жніўня"
This is similar to Backbone.noConflict()
<script>var datef = 'My very important data';</script> ... <script src="datef.js"></script> <script> console.log(typeof datef); // "function" var formattingLib = datef.noConflict(); console.log(datef); // 'My very important data' </script>
Full list of tokens possible in format string include:
- YYYY: 4-digit year
- YY: last 2 digit of year
- MMMM: full name of month
- MMM: short name of month
- MM: ISO8601-compatible number of month (i.e. zero-padded) in year (with January being 1st month)
- M: number of month in year without zero-padding (with January being 1st month)
- DDD: full name of day
- DD: short name of day
- D: min name of day
- dd: zero-padded number of day in month
- d: number of day in month
- HH: zero-padded 24 hour time
- H: 24 hour time
- hh: zero-padded 12 hour time
- h: 12 hour time
- mm: zero-padded minutes
- m: minutes
- ss: zero-padded seconds
- s: seconds
- ff: zero-padded milliseconds, 3 digits
- f: milliseconds
- A: AM/PM
- a: am/pm
- ZZ: time-zone in ISO8601-compatible basic format (i.e. "-0400")
- Z: time-zone in ISO8601-compatible extended format (i.e. "-04:00")