UNPKG

@utilify/date

Version:

The `@utilify/date` package offers essential utilities for working with dates and times in JavaScript and TypeScript. These functions are designed to be intuitive, efficient, and type-safe.

2 lines (1 loc) 2.74 kB
"use strict";function e(e){return e instanceof Date&&!isNaN(e.getTime())}function t(e){return!isNaN(new Date(e).getTime())}exports.adjustDate=function(t,r,n){if(!e(t))return console.error("Invalid date"),new Date(NaN);const o=new Date(t);switch(n){case"milliseconds":o.setMilliseconds(o.getMilliseconds()+r);break;case"seconds":o.setSeconds(o.getSeconds()+r);break;case"minutes":o.setMinutes(o.getMinutes()+r);break;case"hours":o.setHours(o.getHours()+r);break;case"days":o.setDate(o.getDate()+r);break;case"months":o.setMonth(o.getMonth()+r);break;case"years":o.setFullYear(o.getFullYear()+r);break;default:console.error("Invalid time unit")}return o},exports.adjustTimezone=function(t,r){if(!e(t))return console.error("Invalid date"),new Date(NaN);const n=r-t.getTimezoneOffset();return new Date(t.getTime()+60*n*1e3)},exports.convertDateTo=function(t,r){if(e(t))return"utc"===r?t.toUTCString():"iso"===r?t.toISOString():t.toString();console.error("Invalid date")},exports.convertTimeUnit=function(e,t,r){const n={milliseconds:1,seconds:1e3,minutes:6e4,hours:36e5,days:864e5},o=e*n[t];return Math.floor(o/n[r])},exports.formatDate=function(t,r="DMY",n="/"){if(!e(t))return void console.error("Invalid date");const o=t.getDate().toString().padStart(2,"0"),a=(t.getMonth()+1).toString().padStart(2,"0"),s=t.getFullYear();switch(r){case"DMY":return`${o}${n}${a}${n}${s}`;case"MDY":return`${a}${n}${o}${n}${s}`;case"YMD":return`${s}${n}${a}${n}${o}`;default:return void console.error(`Invalid date format: ${r}`)}},exports.formatDuration=function(e,t="hh:mm:ss",r=!0){const n=String(Math.floor(e/36e5)),o=String(Math.floor(e%36e5/6e4)).padStart(2,"0"),a=String(Math.floor(e%6e4/1e3)).padStart(2,"0"),s=String(e%1e3).padStart(3,"0");let i=t.toLowerCase();return r&&"0"===n&&(i=i.slice(i.indexOf("mm"))),i.replace("hh",n).replace("mm",o).replace("ss",a).replace("ms",s)},exports.formatTime=function(t,r="hh:mm"){if(!e(t))return void console.error("Invalid date");const n=-1!==r.search("a"),o=String(n?t.getHours()%12||12:t.getHours()),a=String(t.getMinutes()).padStart(2,"0"),s=String(t.getSeconds()).padStart(2,"0"),i=String(t.getMilliseconds()).padStart(3,"0"),c=t.getHours()>=12?"PM":"AM";return r.toLowerCase().replace("hh",o).replace("mm",a).replace("ss",s).replace("ms",i).replace("a",c)},exports.isLeapYear=function(e){return e%4==0&&(e%100!=0||e%400==0)},exports.isValidDate=e,exports.isValidDateString=t,exports.isWeekday=function(t){if(!e(t))return void console.error("Invalid date");const r=t.getDay();return 0<r&&r<6},exports.isWeekend=function(t){if(!e(t))return void console.error("Invalid date");const r=t.getDay();return 0===r||6===r},exports.parseDate=function(e){if(t(e))return new Date(e);console.error("Invalid date")};