add 1. "ml/kmeans" (kmeans.ts) 2. "series/moving-average" (time-helper.ts) 3. "time/week-number", "time/same-day-last-year" (time-helper.ts) 4. 購買率"retail/purchase-rate", リフト値"retail/lift-value", 原価率"retail/cost-ratio" 値入り率"retail/gross-margin" (server.ts)
24 lines
No EOL
931 B
TypeScript
24 lines
No EOL
931 B
TypeScript
// time-helpers.ts - Date and time utility functions
|
|
|
|
import { getISOWeek, getISODay, subYears, setISOWeek, setISODay, isValid } from 'date-fns';
|
|
|
|
export const getWeekNumber = (dateString: string): number => {
|
|
const date = new Date(dateString);
|
|
if (!isValid(date)) {
|
|
throw new Error('Invalid date string provided.');
|
|
}
|
|
return getISOWeek(date);
|
|
};
|
|
|
|
export const getSameWeekDayLastYear = (dateString: string): string => {
|
|
const baseDate = new Date(dateString);
|
|
if (!isValid(baseDate)) {
|
|
throw new Error('Invalid date string provided.');
|
|
}
|
|
const originalWeek = getISOWeek(baseDate);
|
|
const originalDayOfWeek = getISODay(baseDate);
|
|
const lastYearDate = subYears(baseDate, 1);
|
|
const dateWithWeekSet = setISOWeek(lastYearDate, originalWeek);
|
|
const finalDate = setISODay(dateWithWeekSet, originalDayOfWeek);
|
|
return finalDate.toISOString().split('T')[0]; // Return as YYYY-MM-DD
|
|
}; |