Pythonic dates, times, and deltas in JavaScript
npm install pythonic-datetimePythonic dates, times, and deltas in JavaScript. Advantages:
* The same API as Python's datetime module (see below for differences).
* Clear distinction between naive and aware datetimes.
* All functions/methods return immutable (ok, frozen) objects.
* Timedelta arithmetics.
* Unix timestamps (i.e. seconds instead of milliseconds).
* Lightweight (~3KB gzipped).
This is not a re-write of Python's datetime module in JavaScript; instead, it
leverages the native Date functions wherever possible. In fact, you can think
about pythonic-datetime as a wrapper.
Whetting your appetite:
``js
var birthday = datetime.date(1989, 12, 5); // ja, months start from 1
console.warn(birthday.year); // 1989
birthday.year = 1431; // raises TypeError in strict, simply fails otherwise
var partyDay = datetime.date(2016, 12, 5); // presents are welcome
var yearsAlive = partyDay.subtract(birthday) // returns timedelta object
.divide(datetime.timedelta({days: 365}));
var partyTime = datetime.time(21, 30);
datetime.datetime.combine(partyDay, partyTime).isoformat(); // 2016-12-05T21:30:00
`
bower install pythonic-datetime. Or you can git clone this repo as a
submodule; the master branch will always contain the latest stable.
* The smallest time unit is milliseconds instead of microseconds. Wherever you
see microseconds in Python's datetime API, replace it with milliseconds.
* As there is no operator overloading in JavaScript, the following methods are
used for datetime arithmetics:
* delta.compare(another): returns one of -1, 0, 1delta.add(addend)
* delta.subtract(subtrahend)
* delta.multiply(factor)
* delta.divide(divisor)
* ctime
* If wrong arguments are provided, TypeError is raised. However, comprehensive
argument validation is yet to be implemented.
* No tzinfo, only timezone. This is more of a status-quo.
* Other functions/methods which are not (yet?) implemented: ,fromordinal
, timetuple, toordinal.%j
* The following printf directives are currently not implemented: , %U, and%W
. However, %a, %A, %b, %B, and %p are not localised.%d
* Of the scanf directives, only , %m, %Y, %H, %M, %S, and %f are
implemented.
* To implement the proleptic Gregorian ordinals: toordinal, fromordinal`.
* To validate the constructor arguments.
* To test, document, and improve datetime's interoperability with at least one
of the JavaScript libraries that are synced with the Olson database. In other
words, find the JavaScript pytz counter-part(s).
MIT. Do as you please and praise the snake gods.