npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@hyperplanes/dateutils

v0.1.0

Published

date methods for javascript

Downloads

1

Readme

dateutils

A very simple library of date methods for javascript. Works with native javascript date objects, no dependencies.

Getting started

Install from npm

npm install @hyperplanes/dateutils

or reference the transpiled bundle from the dist folder in a script tag

<script src="dist/dateutils.bundle.js">

Usage

FormatDate - Returns a string representation with the specified format of a date object. Currently only supports two formats: "MM/DD/YYYY" which is the deault, and "YYYY-MM-DD"

import {FormatDate} from "@hyperplanes/dateutils";

let date=new Date(2020,4,13);

FormatDate(date); //returns "05/13/2020"
FormatDate(date,"MM/DD/YYYY"); //returns "05/13/2020"
FormatDate(date,"YYYY-MM-DD"); //returns "2020-05-13"

FormatTimespan - takes a date object as the argument and returns a string with the common representation of the time component

import {FormatTimespan} from "@hyperplanes/dateutils";

let datetime=new Date(2020,4,13,2,8);

FormatTimespan(datetime); //returns "2:08 pm"

MilisecondsToMinutes - takes an integer argument in miliseconds and converts to an integer number of minutes, rounded up to the nearest minute

import {MilisecondsToMinutes} from "@hyperplanes/dateutils";

let ms=70000;

MilisecondsToMinutes(ms); //returns 2

MinutesToTimeString - takes a numeric argument in minutes since midnight and returns a string representing the time of day

import {MinutesToTimeString} from "@hyperplanes/dateutils";

let date=new Date(2020,4,13,8,30);


MinutesToTimeString(date.getMinutes()); //returns "8:30 am"

Now - Returns a new native date object representing the current time instant. This is a wrapper around new Date();

import {Now} from "@hyperplanes/dateutils";

Now(); //returns a date object representing the current time instant

PadLeadingZeros - converts the first argument to a string and adds zeros in front until the length of the string matches the integer second argument. This method is included mainly because it is needed by the other formating methods in the library

import {PadLeadingZeros} from "@hyperplanes/dateutils";

let number=1;

PaddLeadingZeros(number,2); //returns "01"

ParseTimeStringToMinutes - argument is a string representing the time in common format and converts it to an integer representing minutes since midnight. This is useful for generating a datetime object representing a user time input

import {ParseTimeStringToMinutes} from "@hyperplanes/dateutils";

let time="8:30 am";

let minutes=ParseTimeStringToMinutes(time);//returns 510

let datetime=new Date(2020,4,13);
datetime.setMinutes(minutes); // datetime is mutated to represent the instant 2020-05-13 8:30 am

SerializeLocalDate - take a date object and return an ISO-like string but without adjusting for timezone. This is a hack to circumvent unhelpful automatic timezone conversions in some APIs

import {SerializeLocalDate} from "@hyperplanes/dateutils";
let date=new Date(2020,4,13,14,32);

let serialized=SerializeLocalDate(date); //returns "2020-05-13T14:32:00.000Z"

StringAsISODate - Convert a string to a native javascript date, but forcing the browser to interpret it as a proper ISO date string. This solves the problem that Safari's date constructor interprets strings differently than the other browsers. The method will throw an exception if the ISO string does not have timezone information.

import {StringAsISODate} from "@hyperplanes/dateutils";

let iso="2020-02-14T08:42:42.420-500";

let date=StringAsISODate(iso); //date representing the correct time instant. Javascript automatically adjusts for timezone

StringAsLocalDate - Convert a string to a native javascript, but forcing the browser to interpret the input as local time and not UTC. This solves the problem that Safari's date constructor interprets strings differently than the other browsers. The method will throw an exception if the ISO string has timezone information.

import {StringAsLocalDate} from "@hyperplanes/dateutils";
let local="2020-02-14T08:42:42.420";

let date=StringAsLocalDate(local); //returns date object representing 2020-02-14 8:42 am local time

strip_seconds - takes a date argument and returns a new date object but with seconds and miliseconds components set to zero

import {strip_seconds} from "@hyperplanes/dateutils";

let date=new Date(2020,4,13,8,31,42,42);

let result=strip_seconds(date); //date instant representing 2020-05-13 8:31:00.000

strip_time - takes a datetime instant argument and returns a new date object representing just the date components, with the hours, minutes, seconds, and miliseconds components set to zero

import {strip_time} from "@hyperplanes/dateutils";
let date=new Date(2020,4,13,8,31,42,42);

let result=strip_time(date); //date instant representing 2020-05-13 00:00:00.000

Today - returns a new date object representing just the date, with hours, minutes, seconds and miliseconds set to zero

import {Today} from "@hyperplanes/dateutils";

Today();//returns a date object like 2020-05-13 00:00:00.000

AddDays - non-mutating method that takes a date object and number of days as arguments and returns a new date object offset by the specified number of days

import {AddDays} from "@hyperplanes/dateutils";

let date1=new Date(2020,4,13);

let date2=AddDays(date1,-2); //returns new date representing 2020-05-11 without changing the value of date1

AddMinutes - non-mutating method that takes a date object and number of minutes as arguments and returns a new date object offset by the specified number of minutes

import {AddMinutes} from "@hyperplanes/dateutils";

let time1=new Date(2020,4,13,8,59);

let time2=AddMinutes(date1,2); //returns new date representing 2020-05-13 9:01 am without changing the value of time1

cloneDate - takes a date object as the argument and returns a new date object set to the same instant

import {cloneDate} from "@hyperplanes/dateutils";

let time1=new Date(2020,4,13,8,59);
let time2=cloneDate(time1);
time2.setMinutes(2); //time2 is mutated but time1 is not, because time2 is a reference to a different date object