@pawel-up/jexl
Version:
Javascript Expression Language: Powerful context-based expression parser and evaluator
181 lines • 6.18 kB
JavaScript
export const NOW = () => new Date();
export const ADD_DAYS = (date, days) => {
const newDate = new Date(date);
newDate.setDate(newDate.getDate() + days);
return newDate;
};
export const FORMAT_SHORT = (date, locale) => {
return new Date(date).toLocaleDateString(locale, { dateStyle: 'short' });
};
export const FORMAT_MEDIUM = (date, locale) => {
return new Date(date).toLocaleDateString(locale, { dateStyle: 'medium' });
};
export const FORMAT_LONG = (date, locale) => {
return new Date(date).toLocaleDateString(locale, { dateStyle: 'long' });
};
export const FORMAT_FULL = (date, locale) => {
return new Date(date).toLocaleDateString(locale, { dateStyle: 'full' });
};
export const FORMAT_TIME_SHORT = (date, locale) => {
return new Date(date).toLocaleTimeString(locale, { timeStyle: 'short' });
};
export const FORMAT_TIME_MEDIUM = (date, locale) => {
return new Date(date).toLocaleTimeString(locale, { timeStyle: 'medium' });
};
export const FORMAT_TIME_LONG = (date, locale) => {
return new Date(date).toLocaleTimeString(locale, { timeStyle: 'long' });
};
export const FORMAT_DATE_TIME = (date, dateStyle = 'medium', timeStyle = 'short', locale) => {
return new Date(date).toLocaleString(locale, { dateStyle, timeStyle });
};
export const ADD_MONTHS = (date, months) => {
const newDate = new Date(date);
newDate.setMonth(newDate.getMonth() + months);
return newDate;
};
export const ADD_YEARS = (date, years) => {
const newDate = new Date(date);
newDate.setFullYear(newDate.getFullYear() + years);
return newDate;
};
export const ADD_HOURS = (date, hours) => {
const newDate = new Date(date);
newDate.setHours(newDate.getHours() + hours);
return newDate;
};
export const ADD_MINUTES = (date, minutes) => {
const newDate = new Date(date);
newDate.setMinutes(newDate.getMinutes() + minutes);
return newDate;
};
export const SUBTRACT_DAYS = (date, days) => {
return ADD_DAYS(date, -days);
};
export const SUBTRACT_MONTHS = (date, months) => {
return ADD_MONTHS(date, -months);
};
export const SUBTRACT_YEARS = (date, years) => {
return ADD_YEARS(date, -years);
};
export const DIFF_DAYS = (date1, date2) => {
const timeDiff = new Date(date2).getTime() - new Date(date1).getTime();
return Math.ceil(timeDiff / (1000 * 3600 * 24));
};
export const DIFF_HOURS = (date1, date2) => {
const timeDiff = new Date(date2).getTime() - new Date(date1).getTime();
return Math.ceil(timeDiff / (1000 * 3600));
};
export const DIFF_MINUTES = (date1, date2) => {
const timeDiff = new Date(date2).getTime() - new Date(date1).getTime();
return Math.ceil(timeDiff / (1000 * 60));
};
export const START_OF_DAY = (date) => {
const newDate = new Date(date);
newDate.setHours(0, 0, 0, 0);
return newDate;
};
export const END_OF_DAY = (date) => {
const newDate = new Date(date);
newDate.setHours(23, 59, 59, 999);
return newDate;
};
export const START_OF_WEEK = (date) => {
const newDate = new Date(date);
const day = newDate.getDay();
const diff = newDate.getDate() - day;
newDate.setDate(diff);
return START_OF_DAY(newDate);
};
export const END_OF_WEEK = (date) => {
const newDate = new Date(date);
const day = newDate.getDay();
const diff = newDate.getDate() - day + 6;
newDate.setDate(diff);
return END_OF_DAY(newDate);
};
export const START_OF_MONTH = (date) => {
const newDate = new Date(date);
newDate.setDate(1);
return START_OF_DAY(newDate);
};
export const END_OF_MONTH = (date) => {
const newDate = new Date(date);
newDate.setMonth(newDate.getMonth() + 1, 0);
return END_OF_DAY(newDate);
};
export const START_OF_YEAR = (date) => {
const newDate = new Date(date);
newDate.setMonth(0, 1);
return START_OF_DAY(newDate);
};
export const END_OF_YEAR = (date) => {
const newDate = new Date(date);
newDate.setMonth(11, 31);
return END_OF_DAY(newDate);
};
export const IS_WEEKEND = (date) => {
const day = new Date(date).getDay();
return day === 0 || day === 6;
};
export const IS_WEEKDAY = (date) => {
return !IS_WEEKEND(date);
};
export const IS_LEAP_YEAR = (year) => {
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
};
export const DAYS_IN_MONTH = (year, month) => {
return new Date(year, month + 1, 0).getDate();
};
export const DAY_OF_YEAR = (date) => {
const d = new Date(date);
const today = Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());
const start = Date.UTC(d.getUTCFullYear(), 0, 1);
const diff = today - start;
if (!diff) {
return 1;
}
return diff / 86400000 + 1;
};
export const WEEK_OF_YEAR = (date) => {
const d = new Date(date);
const dayNr = (d.getDay() + 6) % 7;
d.setDate(d.getDate() - dayNr + 3);
const jan4 = new Date(d.getFullYear(), 0, 4);
const dayDiff = (d.getTime() - jan4.getTime()) / 86400000;
return 1 + Math.ceil(dayDiff / 7);
};
export const IS_SAME_DAY = (date1, date2) => {
const d1 = new Date(date1);
const d2 = new Date(date2);
return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate();
};
export const IS_TODAY = (date) => {
return IS_SAME_DAY(date, new Date());
};
export const IS_TOMORROW = (date) => {
const tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
return IS_SAME_DAY(date, tomorrow);
};
export const IS_YESTERDAY = (date) => {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
return IS_SAME_DAY(date, yesterday);
};
export const PARSE_ISO_DATE = (dateString) => {
return new Date(dateString);
};
export const TO_ISO_DATE = (date) => {
return new Date(date).toISOString();
};
export const GET_AGE = (birthDate) => {
const today = new Date();
const bDate = new Date(birthDate);
let age = today.getFullYear() - bDate.getFullYear();
const monthDiff = today.getMonth() - bDate.getMonth();
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < bDate.getDate())) {
age--;
}
return age;
};
//# sourceMappingURL=date.js.map