Neurological Phenomenon Multiplexer
    Have ideas to improve npm?Join in the discussion! »


    0.0.0 • Public • Published


    Pythonic 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:

    var birthday =, 12, 5);  // ja, months start from 1
    console.warn(birthday.year);  // 1989
    birthday.year = 1431;  // raises TypeError in strict, simply fails otherwise
    var partyDay =, 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.

    Differences with the original

    • 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:
      • returns one of -1, 0, 1
      • delta.add(addend)
      • delta.subtract(subtrahend)
      • delta.multiply(factor)
      • delta.divide(divisor)
    • 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: ctime, fromordinal, timetuple, toordinal.
    • The following printf directives are currently not implemented: %j, %U, and %W. However, %a, %A, %b, %B, and %p are not localised.
    • Of the scanf directives, only %d, %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.


    npm i pythonic-datetime

    DownloadsWeekly Downloads






    Unpacked Size

    59.7 kB

    Total Files


    Last publish


    • avatar