我环顾了 Stack 并找到了其他一些从 Date 计算季节的例子,但是如果它传递了数千个 Date 对象,我不确定性能。另一个堆栈 OP,有人建议将日期转换为时间,然后比较整数是最有效的,所以我编写了以下函数来计算过去日期的季节。
function season(d) {
day = new Date(d);
days = day.getTime();
const SPRING_START = new Date(day.getFullYear(), 2, (day.getFullYear() % 4 === 1) ? 19 : 20).getTime();
const SUMMER_START = new Date(day.getFullYear(), 5, (day.getFullYear() % 4 === 1) ? 20 : 21).getTime();
const AUTUMN_START = new Date(day.getFullYear(), 8, (day.getFullYear() % 4 === 1) ? 22 : 23).getTime();
const AUTUMN_END = new Date(day.getFullYear(), 11, (day.getFullYear() % 4 === 1) ? 20 : 21).getTime();
const s …Run Code Online (Sandbox Code Playgroud)