@kitiumai/utils-ts
Version:
Comprehensive TypeScript utilities for KitiumAI projects
295 lines • 7.14 kB
JavaScript
/**
* Date utility functions
*/
/**
* Format a date to a string
*
* @param date - The date to format
* @param format - Format string (default: ISO string)
* @returns Formatted date string
*
* @example
* ```ts
* formatDate(new Date(2024, 0, 1), 'YYYY-MM-DD') // '2024-01-01'
* ```
*/
export function formatDate(date, format = 'ISO') {
if (format === 'ISO') {
return date.toISOString();
}
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
return format
.replace('YYYY', String(year))
.replace('MM', month)
.replace('DD', day)
.replace('HH', hours)
.replace('mm', minutes)
.replace('ss', seconds);
}
/**
* Parse a date string
*
* @param dateString - The date string to parse
* @returns Parsed Date object, or null if invalid
*
* @example
* ```ts
* parseDate('2024-01-01') // Date object
* ```
*/
export function parseDate(dateString) {
const date = new Date(dateString);
return Number.isNaN(date.getTime()) ? null : date;
}
/**
* Add days to a date
*
* @param date - The date to add to
* @param days - Number of days to add (can be negative)
* @returns A new Date object
*
* @example
* ```ts
* addDays(new Date(2024, 0, 1), 5) // Date 5 days later
* ```
*/
export function addDays(date, days) {
const result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
/**
* Add months to a date
*
* @param date - The date to add to
* @param months - Number of months to add (can be negative)
* @returns A new Date object
*
* @example
* ```ts
* addMonths(new Date(2024, 0, 1), 2) // Date 2 months later
* ```
*/
export function addMonths(date, months) {
const result = new Date(date);
result.setMonth(result.getMonth() + months);
return result;
}
/**
* Add years to a date
*
* @param date - The date to add to
* @param years - Number of years to add (can be negative)
* @returns A new Date object
*
* @example
* ```ts
* addYears(new Date(2024, 0, 1), 1) // Date 1 year later
* ```
*/
export function addYears(date, years) {
const result = new Date(date);
result.setFullYear(result.getFullYear() + years);
return result;
}
/**
* Get the start of day (00:00:00)
*
* @param date - The date
* @returns A new Date object at start of day
*
* @example
* ```ts
* startOfDay(new Date(2024, 0, 1, 15, 30)) // Date at 00:00:00
* ```
*/
export function startOfDay(date) {
const result = new Date(date);
result.setHours(0, 0, 0, 0);
return result;
}
/**
* Get the end of day (23:59:59.999)
*
* @param date - The date
* @returns A new Date object at end of day
*
* @example
* ```ts
* endOfDay(new Date(2024, 0, 1, 15, 30)) // Date at 23:59:59.999
* ```
*/
export function endOfDay(date) {
const result = new Date(date);
result.setHours(23, 59, 59, 999);
return result;
}
/**
* Check if date1 is before date2
*
* @param date1 - First date
* @param date2 - Second date
* @returns True if date1 is before date2
*
* @example
* ```ts
* isBefore(new Date(2024, 0, 1), new Date(2024, 0, 2)) // true
* ```
*/
export function isBefore(date1, date2) {
return date1.getTime() < date2.getTime();
}
/**
* Check if date1 is after date2
*
* @param date1 - First date
* @param date2 - Second date
* @returns True if date1 is after date2
*
* @example
* ```ts
* isAfter(new Date(2024, 0, 2), new Date(2024, 0, 1)) // true
* ```
*/
export function isAfter(date1, date2) {
return date1.getTime() > date2.getTime();
}
/**
* Check if two dates are the same (same day)
*
* @param date1 - First date
* @param date2 - Second date
* @returns True if dates are the same day
*
* @example
* ```ts
* isSameDay(new Date(2024, 0, 1), new Date(2024, 0, 1, 15, 30)) // true
* ```
*/
export function isSameDay(date1, date2) {
return (date1.getFullYear() === date2.getFullYear() &&
date1.getMonth() === date2.getMonth() &&
date1.getDate() === date2.getDate());
}
/**
* Calculate difference in days between two dates
*
* @param date1 - First date
* @param date2 - Second date
* @returns Number of days difference (can be negative)
*
* @example
* ```ts
* differenceInDays(new Date(2024, 0, 5), new Date(2024, 0, 1)) // 4
* ```
*/
export function differenceInDays(date1, date2) {
const diffTime = date1.getTime() - date2.getTime();
return Math.floor(diffTime / (1000 * 60 * 60 * 24));
}
/**
* Calculate difference in hours between two dates
*
* @param date1 - First date
* @param date2 - Second date
* @returns Number of hours difference (can be negative)
*
* @example
* ```ts
* differenceInHours(new Date(2024, 0, 1, 5), new Date(2024, 0, 1, 1)) // 4
* ```
*/
export function differenceInHours(date1, date2) {
const diffTime = date1.getTime() - date2.getTime();
return Math.floor(diffTime / (1000 * 60 * 60));
}
/**
* Calculate difference in minutes between two dates
*
* @param date1 - First date
* @param date2 - Second date
* @returns Number of minutes difference (can be negative)
*
* @example
* ```ts
* differenceInMinutes(new Date(2024, 0, 1, 0, 5), new Date(2024, 0, 1, 0, 1)) // 4
* ```
*/
export function differenceInMinutes(date1, date2) {
const diffTime = date1.getTime() - date2.getTime();
return Math.floor(diffTime / (1000 * 60));
}
/**
* Get the start of month
*
* @param date - The date
* @returns A new Date object at start of month
*
* @example
* ```ts
* startOfMonth(new Date(2024, 0, 15)) // Date at 2024-01-01 00:00:00
* ```
*/
export function startOfMonth(date) {
const result = new Date(date);
result.setDate(1);
result.setHours(0, 0, 0, 0);
return result;
}
/**
* Get the end of month
*
* @param date - The date
* @returns A new Date object at end of month
*
* @example
* ```ts
* endOfMonth(new Date(2024, 0, 15)) // Date at 2024-01-31 23:59:59.999
* ```
*/
export function endOfMonth(date) {
const result = new Date(date);
result.setMonth(result.getMonth() + 1, 0);
result.setHours(23, 59, 59, 999);
return result;
}
/**
* Get the start of year
*
* @param date - The date
* @returns A new Date object at start of year
*
* @example
* ```ts
* startOfYear(new Date(2024, 5, 15)) // Date at 2024-01-01 00:00:00
* ```
*/
export function startOfYear(date) {
const result = new Date(date);
result.setMonth(0, 1);
result.setHours(0, 0, 0, 0);
return result;
}
/**
* Get the end of year
*
* @param date - The date
* @returns A new Date object at end of year
*
* @example
* ```ts
* endOfYear(new Date(2024, 5, 15)) // Date at 2024-12-31 23:59:59.999
* ```
*/
export function endOfYear(date) {
const result = new Date(date);
result.setMonth(11, 31);
result.setHours(23, 59, 59, 999);
return result;
}
//# sourceMappingURL=date.js.map