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);
}
من خودم هنوز منتظرم موقع بیلد بگه مشکل داره 🚶➡️