DEBUG # 27
1405-04-18 00:33
تابع شمسیه باگ داشت
تابع شمسیه باگ داشت و تبدیلش درست نبود ولی بلاخره درست شد این نسخه درستشه
fn format_to_jalali(utc_time: chrono::DateTime<chrono::Utc>) -> String {
let tehran_time = utc_time.with_timezone(&Tehran);
let g_y = tehran_time.year();
let g_m = tehran_time.month() as i32;
let g_d = tehran_time.day() as i32;
let g_days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let gy = g_y - 1600;
let gm = g_m - 1;
let gd = g_d - 1;
let mut g_day_no = 365 * gy + (gy + 3) / 4 - (gy + 99) / 100 + (gy + 399) / 400;
for i in 0..gm {
g_day_no += g_days_in_month[i as usize];
}
if gm > 1 && ((gy % 4 == 0 && gy % 100 != 0) || (gy % 400 == 0)) {
g_day_no += 1;
}
g_day_no += gd;
let mut j_day_no = g_day_no - 79;
let j_np = j_day_no / 12053;
j_day_no %= 12053;
let mut jy = 979 + 33 * j_np + 4 * (j_day_no / 1461);
j_day_no %= 1461;
if j_day_no >= 366 {
jy += (j_day_no - 1) / 365;
j_day_no = (j_day_no - 1) % 365;
}
let mut jm = 0;
let mut jd = 0;
for i in 0..11 {
let days = if i < 6 { 31 } else { 30 };
if j_day_no < days {
jm = i + 1;
jd = j_day_no + 1;
break;
}
j_day_no -= days;
}
if jm == 0 {
jm = 12;
jd = j_day_no + 1;
}
// خروجی با فرمت YYYY-MM-DD طبق خواسته شما
format!("{:04}-{:02}-{:02} {:02}:{:02}",
jy, jm, jd,
tehran_time.hour(), tehran_time.minute()
)
}
برم بذارمش توی یه فایلی چیزی هر روز داستان نداشته باشم سرش ، ینی جررر خوردم تا این لعنتی درست شد 😑