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

datetime-utility

v3.0.3

Published

Simple tools for date manipulation in Javascript

Downloads

8

Readme

datetime-utility

Simple tools for date manipulation in Javascript or TypeScript

Install

npm install datetime-utility --save

PERIODS

  • MILLISECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • TWO_MONTHS
  • QUARTER
  • SEMESTER
  • YEAR

isISODate(str : String)

check if a string is an ISO-compliant date

parameters

  • str: string to check

examples

console.log( isISODate( '2015-02-21T00:52:43.822Z' ) ); // true
console.log( isISODate( '2015-02-21T00:52:43.822' ) );  // false
console.log( isISODate( '2015-02-21T00:52:43Z' ) );     // true
console.log( isISODate( '2015-02-21T00:52:43' ) );      // false
console.log( isISODate( '2015-02-21T00:52Z' ) );        // true
console.log( isISODate( '2015-02-21T00:52' ) );         // false
console.log( isISODate( '2015-02-21T00Z' ) );           // false

toDate(str : String, pattern : String, strict: boolean)

Returns a date based on a string with a given pattern

parameters

  • str: String to convert to date

  • pattern: String containing date mask (default value 'yyyy/MM/dd hh:mm:ss.S')

  • strict: if true, if the amount of characters for a value in "pattern" is not respected, the function returns null. Default value: true

Pattern | Description ------- | ------------------------------------------ dd | day of the month containing two characters d | day of the month MM | month of the year (minimum 1) containing two characters M | month of the year yyyy | full year containing four characters y | full year hh | hours of day with two characters h | hours of day mm | minutes of hour with two characters m | minutes of hour ss | seconds of minute with two characters s | seconds of minute SSS | millisecond of second with tree characters SS | millisecond of second with at least two characters S | millisecond of second

examples

toDate('10/06/2019 21:13', 'dd/MM/yyyy hh:mm') // returns Date
toDate('10/6/2019 21:13', 'd/M/yyyy hh:mm') // returns Date
toDate('10/6/2019 21:13:49.5', 'd/M/yyyy hh:mm:ss.S') // returns Date
toDate('10/6/2019 21:13:49.5', 'd/M/yyyy hh:mm:ss.SS') // returns null, invalid millisecond
toDate('10/6/2019 21:13:49.5', 'd/M/yyyy hh:mm:ss.SS', false) // returns Date
toDate('10/6/2019 21:13:49.59', 'd/M/yyyy hh:mm:ss.SS') // returns Date
toDate('10/6/2019 21:13:49.593', 'd/M/yyyy hh:mm:ss.SS') // returns Date
toDate('10/6/2019 21:13:49.593', 'd/M/yyyy hh:mm:ss.SSS') // returns Date
toDate('10/6/2019 21:13:49.5', 'd/M/yyyy hh:mm:ss.SSS') // returns null, invalid millisecond
toDate('10/6/2019 21:13:49.5', 'd/M/yyyy hh:mm:ss.SSS', false) // returns Date
toDate('10/6/2019 21:13', 'dd/MM/yyyy hh:mm') // returns null, invalid month
toDate('10/6/2019 21:13', 'dd/MM/yyyy hh:mm', false) // returns Date

dateToStr(date : Date|String, pattern : String)

Converts a date to a string in the format described in the pattern

parameters

  • date: date (or string in ISO format) to convert to string

  • pattern: date format (default value: 'yyyy/MM/dd')

Pattern | Description ------- | ------------------------------------------ dd | day of the month containing two characters d | day of the month MM | month of the year (minimum 1) containing two characters M | month of the year yyyy | full year containing four characters yy | year containing the last two digits y | full year hh | hours of day with two characters h | hours of day mm | minutes of hour with two characters m | minutes of hour ss | seconds of minute with two characters s | seconds of minute SSS | millisecond of second with tree characters SS | millisecond of second with at least two characters S | millisecond of second

examples

dateToStr(
    toDate('10/06/2019 21:13', 'dd/MM/yyyy hh:mm'),
    'dd/MM/yyyy hh:mm'
) // 10/06/2019 21:13

dateToStr(
    toDate('10/6/2019 21:13', 'd/M/yyyy hh:mm'),
    'd/M/yyyy hh:mm'
) // 10/6/2019 21:13

dateToStr(
     toDate('10/6/2019 21:13', 'd/M/yyyy hh:mm'),
     'd/M/yy hh:mm'
 ) // 10/6/19 21:13

dateToStr(
    toDate('10/6/2019 21:13:26.2', 'd/M/yyyy hh:mm:ss.S'),
    'd/M/yyyy hh:mm:ss.SSS'
) // 10/6/2019 21:13:26.002

dateToStr(
    toDate('10/6/2019 21:13:26.2', 'd/M/yyyy hh:mm:ss.S'),
    'd/M/yyyy hh:mm:ss.SS'
) // 10/6/2019 21:13:26.02

dateToStr(
    toDate('10/6/2019 21:13:26.2', 'd/M/yyyy hh:mm:ss.S'),
    'd/M/yyyy hh:mm:ss.S'
) // 10/6/2019 21:13:26.2

dateToStr(
    toDate('10/6/2019 21:13:26.273', 'd/M/yyyy hh:mm:ss.S'),
    'd/M/yyyy hh:mm:ss.SS'
) // 10/6/2019 21:13:26.27

dateToStr(
    null,
    'dd/MM/yyyy hh:mm'
) // null

getMinPattern(strDate: String, pattern: String)

Returns the minimum pattern (strictly necessary) of a given formatted string representing a date

parameters

  • strDate: date in string format
  • pattern: 'strDate' parameter date format

Pattern | Description ------- | ------------------------------------------ dd | day of the month containing two characters d | day of the month MM | month of the year (minimum 1) containing two characters M | month of the year yyyy | full year containing four characters yy | year containing the last two digits y | full year hh | hours of day with two characters h | hours of day mm | minutes of hour with two characters m | minutes of hour ss | seconds of minute with two characters s | seconds of minute SSS | millisecond of second with tree characters SS | millisecond of second with at least two characters S | millisecond of second

examples

let date = toDate('10/06/2019 21:13', 'dd/MM/yyyy hh:mm:ss.S')
let minPattern = getMinPattern('10/06/2019 21:13', 'dd/MM/yyyy hh:mm:ss.S') // dd/MM/yyyy hh:mm
date = plus(date, PERIODS.YEAR, 1)
dateToStr(date, minPattern) // 10/06/2020 21:13

date = toDate('10/06/2019 21:13:00.000', 'dd/MM/yyyy hh:mm')
minPattern = getMinPattern('10/06/2019 21:13:00.000', 'dd/MM/yyyy hh:mm') // dd/MM/yyyy hh:mm
date = plus(date, PERIODS.YEAR, 1)
dateToStr(date, minPattern) // 10/06/2020 21:13

getMinPattern(
    null,
    'dd/MM/yyyy hh:mm:ss.S'
) // null

plus(date: Date|String, period: String|Number, duration : Number)

Adds a value of a time period on a date

parameters

  • date: date (or string in ISO format) to be increased by a period of time

  • period: textual or numeric representation (stored in 'PERIODS') of a period of time to be added to the date

  • duration: unit of time to be added to the date

examples

plus(
    toDate('10/06/2019 21:13', 'dd/MM/yyyy hh:mm'),
    PERIODS.DAY,
    -1
) // date with one day less

plus(
    toDate('10/06/2019 21:13', 'dd/MM/yyyy hh:mm'),
    PERIODS.YEAR,
    1
) // date with one year more

dateEquals(date1 : Date|String, date2 : Date|String, ignore : Number)

Returns true if both dates are equal, ignoring certain lower values

parameters

  • date1: first date (or string in ISO format) of comparison

  • date2: second date (or string in ISO format) of comparison

  • ignore: position from which the lowest values will be ignored (if not informed, nothing is ignored.)

ignore | ignored values ------- | ----------------------------------------------------- default | nothing ignored 7 | nothing ignored 6 | millisecond 5 | millisecond and second 4 | millisecond, second and minute 3 | millisecond, second, minute and hour 2 | millisecond, second, minute, hour and day 1 | millisecond, second, minute, hour, day and month 0 | ignoring everything, that is, the dates are the same

examples

dateEquals(
    toDate('2019/06/10 10:30'),
    toDate('2019/06/10 10:30')
) // true

dateEquals(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    toDate('2019/06/10 02:13')
) // false

// ignoring millisecond, second, minute, hour and day
dateEquals(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    toDate('2019/06/10 02:13'),
    2
) // true

// ignoring millisecond, second, minute and hour
dateEquals(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    toDate('2019/06/10 02:13'),
    3
) // true

// ignoring millisecond, second and minute
dateEquals(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    toDate('2019/06/10 02:13'),
    4
) // false

dateEqualsReverse(date1 : Date|String, date2 : Date|String, ignore : Number)

Returns true if both dates are equal, ignoring certain higher values

parameters

  • date1: first date (or string in ISO format) of comparison

  • date2: second date (or string in ISO format) of comparison

  • ignore: position from which the highest values will be ignored (if not informed, nothing will be ignored).

ignore | ignored values ------- | ----------------------------------------------------- default | nothing ignored 7 | nothing ignored 6 | year 5 | year and month 4 | year, month and day 3 | year, month, day and hour 2 | year, month, day, hour and minute 1 | year, month, day, hour, minute and second 0 | ignoring everything, that is, the dates are the same

examples

dateEqualsReverse(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/10/06 10:40'), 
    toDate('2019/10/06 10:40')
) // true

dateEqualsReverse(
    toDate('2019/10/06 10:40'),
    toDate('2019/12/06 10:40')
) // false

// ignoring year, month and day
dateEqualsReverse(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/10/06 10:40'),
    toDate('2019/12/06 10:40'),
    4
) // true

// ignoring year and month
dateEqualsReverse(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/10/06 10:40'),
    toDate('2019/12/06 10:40'),
    5
) // true

// ignoring year
dateEqualsReverse(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/10/06 10:40'),
    toDate('2019/12/06 10:40'),
    6
) // false

getDateIgnore(date : Date|String, ignore : Number)

Gets date ignoring lower values

parameters

  • date: date (or string in ISO format) that will have higher values ignored

  • ignore: position from which the lowest values will be ignored (if not informed, nothing is ignored.)

ignore | ignored values ------- | ----------------------------------------------------- default | nothing ignored 7 | nothing ignored 6 | millisecond 5 | millisecond and second 4 | millisecond, second and minute 3 | millisecond, second, minute and hour 2 | millisecond, second, minute, hour and day 1 | millisecond, second, minute, hour, day and month 0 | ignoring everything

examples

getDateIgnore(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    3
) // Date only with year, month and day

getDateIgnore(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    4
) // Date only with year, month, day and hour

getDateIgnore(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    7
) // gets exactly the same date

getDateIgnoreReverse(date : Date|String, ignore : Number)

Gets date ignoring high values

parameters

  • date: date (or string in ISO format) that will have higher values ignored

  • ignore: position from which the highest values will be ignored (if not informed, nothing will be ignored).

ignore | ignored values ------- | ----------------------------------------------------- default | nothing ignored 7 | nothing ignored 6 | year 5 | year and month 4 | year, month and day 3 | year, month, day and hour 2 | year, month, day, hour and minute 1 | year, month, day, hour, minute and second 0 | ignoring everything, that is, the dates are the same

examples

getDateIgnoreReverse(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    4
) // Date only with hour, minute, second and millisecond

getDateIgnoreReverse(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    5
) // Date only with day, hour, minute, second and millisecond

getDateIgnoreReverse(
    // default pattern: 'yyyy/MM/dd hh:mm:ss.S'
    toDate('2019/06/10 10:30'),
    7
) // gets exactly the same date

formatTime(time : Number, ...args : Number)

Gets values from a time

parameters

  • time: milliseconds obtained by the getTime() function
  • ...args: types of values to be extracted and placed in an array

examples

formatTime(
    200100,
    PERIODS.MINUTE, 
    PERIODS.SECOND
) // [<amount of minutes in 200100 milliseconds>, <number of seconds remaining>]

Attention!

The MONTH, TWO_MONTHS, SEMESTER, QUARTER, and YEAR variables can not be used in formatTime.

dateInApointment(date : Date | String, target : Date|String, period : String|Number, duration : Number, marginErrorPeriod: string | number, marginErrorDuration: number)

Returns true if the date is present within a recurring schedule.

parameters

  • date: first scheduling date (or string in ISO format)

  • target: check to see if you are on scheduling.

  • period: textual or numeric representation (stored in 'PERIODS') of a time period of the schedule

  • duration: unit to include new periodic dates in schedule

  • marginErrorPeriod: textual or numeric representation (stored in 'PERIODS') of a programming period to be used to define a "margin of error". (Default value: PERIODS.MILLISECOND)

  • marginErrorDuration: margin of error value. (Default value: 0)

examples

dateInApointment(
    toDate('2000/01/02'),
    toDate('2025/07/02'),
    PERIODS.SEMESTER,
    1
) // returns true because the date 2025/07/02 is included in a timeline for each semester from the date of 2000/01/02

dateInApointment(
    toDate('2000/01/02'),
    toDate('2025/07/02'),
    PERIODS.SEMESTER,
    2
) // returns false because the date 2025/07/02 is not included in a timeline for each two semester from the date of 2000/01/02

dateInApointment(
    toDate('2000/01/01'),
    toDate('2025/07/03'),
    PERIODS.SEMESTER,
    1,
    PERIODS.DAY,
    1
) // returns false because the date 2025/07/03 is not included in a timeline for each semester from the date 2000/01/01 and the margin of error is only 1 day

dateInApointment(
    toDate('2000/01/01'),
    toDate('2025/07/02'),
    PERIODS.SEMESTER,
    1,
    PERIODS.DAY,
    1
) // returns true because although the date 2025/07/02 is not included in a timeline for each semester from the date 2000/01/01, the margin of error has been set to 1 day

scape(str : String)

Returns string with special regular expression characters with escape

parameters

  • str: string to have its special RegExp characters with escape

example

scape('ab.*+?^${c}()|d[]\\ef/') // ab\.\*\+\?\^\$\{c\}\(\)\|d\[\]\\ef\/