0.0.2 • Published 7 years ago

period-js v0.0.2

Weekly downloads
1
License
ISC
Repository
github
Last release
7 years ago

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