Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

period-js

jf-t4ISC0.0.2

Period.js is (usually) a replacement for the native JavaScript Date object. Period.js requires the native JavaScript Date object, for one function, when the constructor was called without no parameters.

readme

Period.js

Period.js is (usually) a replacement for the native JavaScript Date object. Period.js requires the native JavaScript Date object, for one function, when the constructor was called without no parameters.

let date = new Period()

Eventually runs this code snippet:


if (Object.keys(periodInit).length === 0) {
    let tempDate = new Date(); // <---- see

    this.year = tempDate.getFullYear();
    this.month = tempDate.getMonth() + 1;

    this.day = tempDate.getDate();
    this.hours = tempDate.getHours();

    this.minutes = tempDate.getMinutes();
    this.seconds = tempDate.getSeconds();
    this.milliseconds = tempDate.getMilliseconds();

    this.timezone = tempDate.getTimezoneOffset() / 60;
}

The variable periodInit is the parameter to the PeriodValues constructor, from inside the Period constructor. Besides this I never touch the Date object.

Now to the real stuff.

JavaScript's Date object puts display formatting first. This makes it difficult to use for mathematical reasons. I created Period.js to fix that problem, to replace the native Date object with a system of simple functions and variables to make adding, subtracting, replacing, and formatting dates easier than ever.

Quick start

There are many ways to initiate a Period.js object:

  • Empty constructor uses the JavaScript Date object to get the current time

let date = new Period();
  • Create an object with as many parameters as you want and pass that in with this format: `javascript

let initObject = { year: 2017, month: 4, day: 2, hours: 10, minutes: 45, seconds: 15, milliseconds: 396, timezone: -4 }

let date = new Period(initObject)


But remember, every one of those parameters is optional.

- Array in specific order:

```javascript

let initArray = [2017, 4, 2, 10, 45, 15, 396];
// Format: [year, month, day, hours, minutes, seconds, milliseconds]

let date = new Period(initArray);

There is no option for passing in a timezone to the Period constructor when using an array. This is due to confusion about the order of elements. If you want to initiate a timezone, call:


date.setTimezone(timezone);

API

The API is not done at this point, but here are the functions for now. They will be explained individually after:


Period:

    constructor(dateObject);

    add(label, time);
    set(label, time);

    addYears(years);
    addMonths(months);
    addDays(days);
    addHours(hours);
    addMinutes(minutes);
    addSeconds(seconds);
    addMilliseconds(milliseconds);
    addTimezone(timezone);

    setYear(year);
    setMonth(month);
    setDay(day);
    setHour(hour);
    setMinute(minute);
    setSecond(second);
    setMillisecond(millisecond);
    setTimezone(timezone);

    display(format);
    get(label);

    next();
    this();
    last();

Displaying Formatted Dates

This feature is to come soon... There will be a nice way to format Period objects by passing in a string.

Thank You!

This is a fun side project of mine at the moment. I have been working a lot with date manipulation, and the native Date object isn't suited for this. Almost all of the work on this project is being done on the little down time I have on weekends.