_< HAMYAR TOP
DEBUG 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()
    )
}

برم بذارمش توی یه فایلی چیزی هر روز داستان نداشته باشم سرش ، ینی جررر خوردم تا این لعنتی درست شد 😑