1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-19 15:55:31 +02:00
Files
misskey/packages/frontend/src/utility/is-birthday.ts
かっこかり cd973b252a fix(frontend): 2月29日を誕生日に設定している場合、平年は3月1日を誕生日として扱うように (#17072)
* fix(frontend): 2月29日を誕生日に設定している場合、平年は3月1日を誕生日として扱うように

* Update Changelog

* add tests

* spdx
2026-01-08 12:16:33 +09:00

29 lines
800 B
TypeScript

/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
import * as Misskey from 'misskey-js';
export function isBirthday(user: Misskey.entities.UserDetailed, now = new Date()): boolean {
if (user.birthday == null) return false;
const [_, bm, bd] = user.birthday.split('-').map((v) => parseInt(v, 10));
if (isNaN(bm) || isNaN(bd)) return false;
const y = now.getFullYear();
const m = now.getMonth() + 1;
const d = now.getDate();
// 閏日生まれで平年の場合は3月1日を誕生日として扱う
if (bm === 2 && bd === 29 && m === 3 && d === 1 && !isLeapYear(y)) {
return true;
}
return m === bm && d === bd;
}
function isLeapYear(year: number): boolean {
return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
}