icalendar-events
Version:
A RFC5545 compliant parser for iCalendar VEVENT with time zone support and accurate recurring events generation.
51 lines (50 loc) • 2.39 kB
JavaScript
export function toSQL(dateTime) {
if (dateTime.isDate) {
return dateTime.toSQLDate();
}
else {
return dateTime.toSQL({ includeZone: true });
}
}
export function setSmallUnits(dateTime, origin, upTo) {
switch (upTo) {
case "millisecond":
return dateTime.set({ millisecond: origin.millisecond });
case "second":
return dateTime.set({ millisecond: origin.millisecond, second: origin.second });
case "minute":
return dateTime.set({ millisecond: origin.millisecond, second: origin.second, minute: origin.minute });
case "hour":
return dateTime.set({ millisecond: origin.millisecond, second: origin.second, minute: origin.minute, hour: origin.hour });
case "day":
return dateTime.set({ millisecond: origin.millisecond, second: origin.second, minute: origin.minute, hour: origin.hour, day: origin.day });
case "week":
return dateTime.set({ millisecond: origin.millisecond, second: origin.second, minute: origin.minute, hour: origin.hour, localWeekday: origin.localWeekday, localWeekNumber: origin.localWeekNumber });
case "month":
return dateTime.set({ millisecond: origin.millisecond, second: origin.second, minute: origin.minute, hour: origin.hour, day: origin.day, month: origin.month });
case "year":
return dateTime.set({ millisecond: origin.millisecond, second: origin.second, minute: origin.minute, hour: origin.hour, day: origin.day, month: origin.month, year: origin.year });
default:
throw new Error(`DateTime setSmallUnits: invalid unit: ${upTo}`);
}
}
export function plusUnit(dateTime, unit, interval) {
switch (unit) {
case "second":
return dateTime.plus({ seconds: interval });
case "minute":
return dateTime.plus({ minutes: interval });
case "hour":
return dateTime.plus({ hours: interval });
case "day":
return dateTime.plus({ days: interval });
case "week":
return dateTime.plus({ weeks: interval });
case "month":
return dateTime.plus({ months: interval });
case "year":
return dateTime.plus({ years: interval });
default:
throw new Error(`DateTime plusUnit: invalid unit: ${unit}`);
}
}