Date Wrapper
A simple library to wrap js dates with extra functionality, easy validation, immutability, chainability, and string formatting
- No external dependencies
Usage
Available as npm package including cjs, esm, umd, and iife
npm install date-wrapper
In browser using script tags
date-wrapper.iife.js
date-wrapper.iife.min.js
Features and Examples
Create an object using strings or standard js Dates
const D = dateWrapper; // Alias ; // js Date() ; // yyyy/mm/dd; // yyyy/m/d // mm/dd/yyyy format; // mm/dd/yyyy; // m/d/yyyy// pass optional parameter to create using dd/mm/yyyy format; // dd/mm/yyyy; // d/m/yyyy // separator can be / or -;
Invalid dates will return undefined, making for easy string validation
; // undefined ; // undefined; // undefined // (leap year); // Sat Feb 29 2020 00:00:00
Setting the time
dateWrapper object // returns undefined if arg out of range: (h 0-23, m 0-59, s 0-59, ms 0-999)
; // Tue Jan 01 2019 00:00:00 ; // Tue Jan 01 2019 08:30:59; // Tue Jan 01 2019 08:00:00
Adding to or Subtracting from the date
dateWrapper object dateWrapper object
; // Thu Jan 10 2019 00:00:00; // Mon Dec 31 2018 00:00:00; // Wed Jan 01 2020 00:00:00; // Sat Jan 01 2000 00:00:00
Adding to or Subtracting from the time
dateWrapper object
; // Wed Jan 02 2019 01:09:40; // Mon Dec 31 2018 23:59:00
Immutability and chaining
// all operations create a new copyvar today = ; // Tue Jan 01 2019 00:00:00// chain operationsvar dt = today;var tomorrow = today; // Wed Jan 02 2019 00:00:00// today remains unchangedtoday; // Tue Jan 01 2019 00:00:00var jsDate = today; jsDate; // Tue Jan 11 2019 00:00:00// today remains unchangedtoday; // Tue Jan 01 2019 00:00:00
Comparing dates with or without the time component
// comparison functions accept DateWrapper objects or js Datesvar isSame = ;var isSame = ; // examplesvar D_now = ; // Fri Mar 08 2019 20:46:23var D_userInput = ; // Fri Mar 08 2019 00:00:00 // compare dates ignoring their timeD_userInput; // true// compare dates including their timeD_userInput; // false D_userInput; // trueD_userInput; // falseD_userInput; // trueD_userInput; // trueD_userInput; // falseD_userInput; // falseD_userInput; // falseD_userInput; // true
Timespan between two dates
days: number hours: number minutes: number seconds: number ms: number
var timespan = ; // { days: 1, hours: 0, minutes: 0, seconds: 0, ms: 0 }var timespan = ; // { days: -1, hours: 0, minutes: 0, seconds: 0, ms: 0 }
Getting first and last days of the current month or year
DateWrapper object DateWrapper object DateWrapper object DateWrapper object
; // Wed May 01 2019 00:00:00; // Fri May 31 2019 00:00:00; // Tue Jan 01 2019 00:00:00; // Tue Dec 31 2019 00:00:00
String and js Date representation
Date string // the default js Date.toString() output
Custom formatting using toString()
parameter
string
code | example | code | example | code | example | code | example | |||
---|---|---|---|---|---|---|---|---|---|---|
yyyy | 2019 | M | 1 | d | 1 | H | 16 | |||
yy | 19 | MM | 01 | dd | 01 | HH | 16 | |||
MMM | Jan | ddd | Tue | h | 4 | |||||
MMMM | January | dddd | Tuesday | hh | 04 | |||||
mm | 29 | |||||||||
ss | 59 | |||||||||
fff | 050 | |||||||||
tt | PM |
var date = ;date; // '01/01/19'date; // 'Tuesday January 1, 2019 04:29:59.050 PM'var timestamp = date; // '20190101-162959'