Merge pull request #46 from tobiichi3227/fix/event-diff-cal

Fix(Fortune): Incorrect time difference calculation for recent events
This commit was merged in pull request #46.
This commit is contained in:
Moon
2024-12-25 19:07:38 +08:00
committed by GitHub
4 changed files with 73 additions and 65 deletions

View File

@@ -133,12 +133,14 @@ function daysDiff(eventIndex) {
} }
const triggerDate = event.triggerDate; const triggerDate = event.triggerDate;
let isCustomEvent = false;
eventYear = year; eventYear = year;
if ('year' in triggerDate) { if ('year' in triggerDate) {
eventYear = validateNumber(triggerDate.year, 1, maxDate.getFullYear(), 'triggerDate.year', event); eventYear = validateNumber(triggerDate.year, 1, maxDate.getFullYear(), 'triggerDate.year', event);
if (eventYear === null) { if (eventYear === null) {
return -1; return -1;
} }
isCustomEvent = true;
} }
if (!('month' in triggerDate)) { if (!('month' in triggerDate)) {
@@ -179,12 +181,17 @@ function daysDiff(eventIndex) {
eventDate = firstTargetDay + (triggerDate.week - 1) * 7; eventDate = firstTargetDay + (triggerDate.week - 1) * 7;
} }
if (!isCustomEvent && (month > eventMonth || (month == eventMonth && date > eventDate))) {
eventYear += 1;
}
const endDate = new Date( const endDate = new Date(
eventYear, eventYear,
eventMonth - 1, eventMonth - 1,
eventDate, eventDate,
); );
// calculate the difference in milliseconds and convert it to days // calculate the difference in milliseconds and convert it to days
const timeDiff = Math.ceil((endDate - startDate) / (1000 * 60 * 60 * 24)); const timeDiff = Math.ceil((endDate - startDate) / (1000 * 60 * 60 * 24));
return timeDiff; return timeDiff;

View File

@@ -1,3 +1,67 @@
{ {
"special_events": [] "special_events": [
{
"event": "夏至",
"triggerDate": {
"year": "2025",
"month": "6",
"date": "21"
},
"status_index": "0",
"goodFortunes": {
"l_1_event": "觀賞日出和日落",
"l_1_desc": "享受一年最長的白天",
"l_2_event": "",
"l_2_desc": ""
},
"badFortunes": {
"r_1_event": "",
"r_1_desc": "",
"r_2_event": "",
"r_2_desc": ""
}
},
{
"event": "中秋節",
"triggerDate": {
"year": "2025",
"month": "10",
"date": "6"
},
"status_index": "0",
"goodFortunes": {
"l_1_event": "賞月",
"l_1_desc": "與家人一同賞月,增進感情",
"l_2_event": "吃月餅",
"l_2_desc": "與家人朋友分享月餅的美味"
},
"badFortunes": {
"r_1_event": "",
"r_1_desc": "",
"r_2_event": "",
"r_2_desc": ""
}
},
{
"event": "冬至",
"triggerDate": {
"year": "2025",
"month": "12",
"date": "21"
},
"status_index": "0",
"goodFortunes": {
"l_1_event": "吃湯圓",
"l_1_desc": "團團圓圓",
"l_2_event": "保暖",
"l_2_desc": "冬至到了"
},
"badFortunes": {
"r_1_event": "",
"r_1_desc": "",
"r_2_event": "",
"r_2_desc": ""
}
}
]
} }

View File

@@ -662,26 +662,6 @@
"r_2_desc": "" "r_2_desc": ""
} }
}, },
{
"event": "冬至",
"triggerDate": {
"month": "12",
"date": "22"
},
"status_index": "0",
"goodFortunes": {
"l_1_event": "吃湯圓",
"l_1_desc": "團團圓圓",
"l_2_event": "保暖",
"l_2_desc": "冬至到了"
},
"badFortunes": {
"r_1_event": "",
"r_1_desc": "",
"r_2_event": "",
"r_2_desc": ""
}
},
{ {
"event": "平安夜", "event": "平安夜",
"triggerDate": { "triggerDate": {

View File

@@ -1,46 +1,3 @@
{ {
"special_events": [ "special_events": []
{
"event": "夏至",
"triggerDate": {
"year": "2025",
"month": "6",
"date": "21"
},
"status_index": "0",
"goodFortunes": {
"l_1_event": "觀賞日出和日落",
"l_1_desc": "享受一年最長的白天",
"l_2_event": "",
"l_2_desc": ""
},
"badFortunes": {
"r_1_event": "",
"r_1_desc": "",
"r_2_event": "",
"r_2_desc": ""
}
},
{
"event": "中秋節",
"triggerDate": {
"year": "2025",
"month": "10",
"date": "6"
},
"status_index": "0",
"goodFortunes": {
"l_1_event": "賞月",
"l_1_desc": "與家人一同賞月,增進感情",
"l_2_event": "吃月餅",
"l_2_desc": "與家人朋友分享月餅的美味"
},
"badFortunes": {
"r_1_event": "",
"r_1_desc": "",
"r_2_event": "",
"r_2_desc": ""
}
}
]
} }