52 lines
No EOL
1.4 KiB
JavaScript
52 lines
No EOL
1.4 KiB
JavaScript
const dayjs = require('dayjs');
|
|
|
|
export const getTimeDifferenceAsia = () => {
|
|
const now = dayjs();
|
|
const local = now.utcOffset();
|
|
const serverTime = now.utcOffset(8);
|
|
return serverTime - local;
|
|
};
|
|
|
|
function convertToNow(event){
|
|
let start;
|
|
if (event["timezoneDependent"]) {
|
|
start = dayjs(event.start, 'YYYY-MM-DD HH:mm:ss').subtract(getTimeDifferenceAsia(), 'minute');
|
|
} else {
|
|
start = dayjs(event.start, 'YYYY-MM-DD HH:mm:ss').subtract(0, 'minute');
|
|
}
|
|
const end = dayjs(event.end, 'YYYY-MM-DD HH:mm:ss').subtract(0, 'minute');
|
|
|
|
return [start, end];
|
|
}
|
|
|
|
export function isCurrentEvent(event) {
|
|
const [start, end] = convertToNow(event);
|
|
|
|
const timeSinceStart = -start.diff(dayjs(), 'day', true);
|
|
const timeUntilEnd = end.diff(dayjs(), 'day', true);
|
|
|
|
if (timeSinceStart > 0 && timeUntilEnd > 0){
|
|
event["startTimestamp"] = start.unix();
|
|
event["endTimestamp"] = end.unix();
|
|
return event;
|
|
}
|
|
}
|
|
|
|
export function isUpcomingEvent(event){
|
|
const [start, ] = convertToNow(event);
|
|
const timeUntilStart = start.diff(dayjs(), 'day', true);
|
|
|
|
if (timeUntilStart > 0){
|
|
event["startTimestamp"] = start.unix();
|
|
event["endTimestamp"] = 0;
|
|
return event;
|
|
}
|
|
}
|
|
|
|
export function compareStartTimes(a, b) {
|
|
return dayjs(a.start).diff(dayjs(b.start), 'day', true);
|
|
}
|
|
|
|
export function compareEndTimes(a, b) {
|
|
return dayjs(a.end).diff(dayjs(b.end), 'day', true);
|
|
} |