_< HAMYAR TOP
TOOLBOX TOOLBOX
# 24
1405-04-17 20:34

تبدیل تاریخ به شمسی توی راست

برای تبدیل تاریخ به شمسی توی راست باید از پکیج های زیر استفاده بشه که توی Cargo.toml میذاریم

[dependencies]
chrono = { version = "0.4", features = ["serde"] }
chrono-tz = "0.9"
jalali-date = "0.2" 

chrono  که کلا برای مدیریت زمان و تاریخه.

 

chrono-tz برای تبدیل منطقه زمانی هاست 

 

jalali-date اینم واسه اینکه تبدیل کنه به تاریخ شمسی 

 

اینم یه نمونه استفادش که دادم به ai نوشت 😁

 

use chrono::{DateTime, Datelike, Timelike, Utc};
use chrono_tz::Asia::Tehran;

fn main() {
    // ۱. فرض می‌کنیم این زمان UTC است که از دیتابیس (یا سرور) گرفتیم
    let utc_time: DateTime<Utc> = Utc::now(); 
    println!("۱. زمان به وقت جهانی (UTC):   {}", utc_time);

    // ۲. تبدیل زمان جهانی به منطقه زمانی تهران (با اعمال خودکار ساعت رسمی/DST)
    let tehran_time = utc_time.with_timezone(&Tehran);
    println!("۲. زمان به وقت تهران (IRST):   {}", tehran_time);

    // ۳. جدا کردن سال، ماه و روز میلادی (به وقت تهران) برای تبدیل
    // توجه: متدهای year, month, day نیاز به ایمپورت تریت Datelike دارند.
    let g_year = tehran_time.year();
    let g_month = tehran_time.month() as i32;
    let g_day = tehran_time.day() as i32;

    // ۴. تبدیل تاریخ میلادی به شمسی با استفاده از jalali-date
    // خروجی این تابع یک Tuple سه تایی به صورت (سال، ماه، روز) است.
    let (j_year, j_month, j_day) = jalali_date::jdate::g2j(g_year, g_month, g_day);

    // ۵. فرمت کردن خروجی نهایی به همراه ساعت، دقیقه و ثانیه
    // متدهای hour, minute, second نیاز به ایمپورت تریت Timelike دارند.
    let jalali_formatted = format!(
        "{:04}/{:02}/{:02} {:02}:{:02}:{:02}",
        j_year,
        j_month,
        j_day,
        tehran_time.hour(),
        tehran_time.minute(),
        tehran_time.second()
    );

    println!("۳. خروجی نهایی شمسی:        {}", jalali_formatted);
}

من خودم هنوز منتظرم موقع بیلد بگه مشکل داره 🚶‍➡️