55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
/**
|
|
* Date and time utilities for working with market data
|
|
*/
|
|
export const dateUtils = {
|
|
/**
|
|
* Check if a date is a trading day (Monday-Friday, non-holiday)
|
|
* This is a simplified implementation - a real version would check market holidays
|
|
*/
|
|
isTradingDay(date: Date): boolean {
|
|
const day = date.getDay();
|
|
return day > 0 && day < 6; // Mon-Fri
|
|
},
|
|
|
|
/**
|
|
* Get the next trading day from a given date
|
|
*/
|
|
getNextTradingDay(date: Date): Date {
|
|
const nextDay = new Date(date);
|
|
nextDay.setDate(nextDay.getDate() + 1);
|
|
|
|
while (!this.isTradingDay(nextDay)) {
|
|
nextDay.setDate(nextDay.getDate() + 1);
|
|
}
|
|
|
|
return nextDay;
|
|
},
|
|
|
|
/**
|
|
* Get the previous trading day from a given date
|
|
*/
|
|
getPreviousTradingDay(date: Date): Date {
|
|
const prevDay = new Date(date);
|
|
prevDay.setDate(prevDay.getDate() - 1);
|
|
|
|
while (!this.isTradingDay(prevDay)) {
|
|
prevDay.setDate(prevDay.getDate() - 1);
|
|
}
|
|
|
|
return prevDay;
|
|
},
|
|
|
|
/**
|
|
* Format a date as YYYY-MM-DD
|
|
*/
|
|
formatDate(date: Date): string {
|
|
return date.toISOString().split('T')[0];
|
|
},
|
|
|
|
/**
|
|
* Parse a date string in YYYY-MM-DD format
|
|
*/
|
|
parseDate(dateStr: string): Date {
|
|
return new Date(dateStr);
|
|
}
|
|
};
|