@jelleklaver/jsdateformatdeprecated

Format JS dates in a PHP-like way. A tiny JS library to easily prettify dates.

Usage no npm install needed!

<script type="module">
  import jelleklaverJsdateformat from 'https://cdn.skypack.dev/@jelleklaver/jsdateformat';
</script>

README

@jelleklaver/jsdateformat

Format JS dates in a PHP-like way. A tiny JS library to easily prettify dates.

Install

This repo is available via npm (jsdateformat)

npm install @jelleklaver/jsdateformat --save

Usage

Import it and play. The formatDate() function returns the formatted date.

var jsdateformat = require('@jelleklaver/jsdateformat');

jsdateformat.formatDate(new Date(2000, 1, 1, 13, 1), 'd-m-Y H:i');      // 01-01-2000 13:01
jsdateformat.now('d-m-Y H:i');                                          // 01-01-2018 12:00

Params

formatDate()

{date} date - The date you want formatted
{string} format - The way you want the date to be formatted
{boolean} utc - If local or UTC date should be returned, defaults to false

now()

{string} format - The way you want the date to be formatted
{boolean} utc - If local or UTC date should be returned, defaults to false

Internationalization

Internationalization is possible for the ordinal suffixes, named days and named months. Currently the library only contains English to keep it small. To change the language, you'll first need to add your own translations.

Add Translation

You can add your translation to the jsdateformat.i18n object. Add your language(s) and inside the language object you can translate the ordinalSuffixes, monthNames and dayNames.

ordinalSuffixes

This object counts from 0 up to 9. The value for e.g. 0 will be used with 0, 10, 20, 30, ....

monthNames

This object counts from 1 up to 12. Starting with 1 for January and ending with 12 for December. Short versions of the months are automatically created from the first three characters of these values.

dayNames

This object counts from 1 up to 7. Starting with 1 for Monday and ending with 7 for Sunday. Short versions of the days are automatically created from the first three characters of these values.

Example Translation

jsdateformat.i18n.nl = {
    'dayNames': {
        '1': 'Maandag',
        '2': 'Dinsdag',
        '3': 'Woensdag',
        '4': 'Donderdag',
        '5': 'Vrijdag',
        '6': 'Zaterdag',
        '7': 'Zondag'
    },
    'monthNames': {
        '1': 'Januari',
        '2': 'Februari',
        '3': 'Maart',
        '4': 'April',
        '5': 'Mei',
        '6': 'Juni',
        '7': 'Juli',
        '8': 'Augustus',
        '9': 'September',
        '10': 'Oktober',
        '11': 'November',
        '12': 'December'
    },
    'ordinalSuffixes': {
        '0': 'de',
        '1': 'ste',
        '2': 'de',
        '3': 'de',
        '4': 'de',
        '5': 'de',
        '6': 'de',
        '7': 'de',
        '8': 'ste',
        '9': 'de'
    }
};

Set language

To change the language, set the jsdateformat.options.langauge option.

jsdateformat.options.language = 'nl';

Formatting Options

Table mostly copied from the PHP Date function explanation.

Format character Description Example or range returned values
d Day of the month, 2 digits with leading zeros 01 - 31
D A textual representation of a day, three letters Mon - Sun
j Day of the month without leading zeros 1 - 31
l A full textual representation of the day of the week Monday - Sunday
N ISO-8601 numeric representation of the day of the week 1 (Mon) - 7 (Sun)
S English ordinal suffix for the day of the month st, nd, rd or th. (works well with j)
w Numeric representation of the day of the week 0 (Sun) - 6 (Sat)
F A full textual representation of a month January - December
m Numeric representation of a month, with leading zeros 01 - 12
M A short textual representation of a month, three letters Jan - Dec
n Numeric representation of a month, without leading zeros 1 - 12
t Number of days in the given month 28 - 31
Y A full numeric representation of a year, 4 digits e.g. 1999
y A full numeric representation of a year, 2 digits e.g. 99
G 24-hour format of an hour without leading zeros 0 - 23
H 24-hour format of an hour with leading zeros 00 - 23
i Minutes with leading zeros 00 - 59
s Seconds with leading zeros 00 - 59

As you've probably noticed, not all options from the PHP Date function are available yet. This function is work in progress and any help would be greatly appreciated.

UTC

To get the formatted date in UTC

jsdateformat.formatDate(new Date(), 'd-m-Y H:i', true);       // 01-01-2000 11:01

Testing

You can test the library using npm test. It should show the results like this:

--------------------

Testing formatDate
...................
Testing UTC
.
Testing i18n
.....

--------------------
Tested: 25
Passed: 25
Failed: 0

Or when a mistake was made:

--------------------

Testing formatDate
........
testFormatDate: Input date "Wed Mar 01 2000 04:05:00 GMT+0100 (CET)", "F", expected "Marach", but received "March".
...........
Testing UTC
.
Testing i18n
.....

--------------------
Tested: 26
Passed: 25
Failed: 1
--------------------

License

ISC | Copyright 2018 Jelle Klaver https://jelleklaver.com