修复(计费): 星期换算避免 i64 溢出

weekday_from_date_key 先按 7 取模再加偏移,消除 date_key 接近 i64::MAX 时的中间加法溢出

Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
2026-10-02 19:11:59 +08:00
parent 5bb98fd8fc
commit 603ecb0887
@@ -54,7 +54,7 @@ pub fn civil_from_days(date_key: i64) -> (i32, u8, u8) {
/// ISO 星期:周一 = 1,周日 = 7。
pub fn weekday_from_date_key(date_key: i64) -> u8 {
// 中文注释:1970-01-01 是周四;这里返回 ISO weekday,周一=1,周日=7。
(date_key + 3).rem_euclid(7) as u8 + 1
(date_key.rem_euclid(7) + 3).rem_euclid(7) as u8 + 1
}
#[cfg(test)]