UNPKG

@kalender/core

Version:
89 lines (75 loc) 2.02 kB
import { WeekDay } from './definition'; import { daysOfMonth } from './month'; export function isWorkDay(date: Date) { const day = date.getDay(); return day >= 1 && day <= 5; } export function isWeekend(date: Date) { const day = date.getDay(); return day === 6 || day === 0; } export function getWeekDay(date: Date) { const day = date.getDay(); return day === 0 ? 7 : (day as WeekDay); } export function getMonth(date: Date) { return date.getMonth() + 1; } export function eraseTime(date: Date) { const { year, month, day } = extract(date); return normalDate(year, month, day); } export function extract(date: Date) { return { year: date.getFullYear(), month: getMonth(date), day: date.getDate(), weekDay: getWeekDay(date), dayOfYear: dayOfYear(date), hour: date.getHours(), minute: date.getMinutes(), second: date.getSeconds(), }; } export function extractDate(date: Date) { return { year: date.getFullYear(), month: getMonth(date), day: date.getDate(), weekDay: getWeekDay(date), }; } export function normalDate(year: number, month: number, day: number = 1) { return new Date(year, month - 1, day); } export function perfectDate(year: number, month: number, day: number = 1) { if (day > 0) { return normalDate(year, month, day); } const maxDay = daysOfMonth(year, month); if (day === 0) day = -1; return normalDate(year, month, day + maxDay + 1); } export function dayOfYear(date: Date) { const firstDay = normalDate(date.getFullYear(), 1, 1); return (date.valueOf() - firstDay.valueOf()) / 1000 / 3600 / 24 + 1; } export function addWeekDays(day: WeekDay, count: number) { count = count % 7; day = day + count; if (day < 0) { day += 7; } if (day > 7) { day -= 7; } return day; } export function now() { return new Date(); } export function daysRemainOfMonth(date: Date) { const { year, month, day } = extract(date); const days = daysOfMonth(year, month); return days - day; }