Unix Timeに変換して計算する。UnixTimeは秒単位のため、1日の場合は、60 * 60 * 24 = 86400となる。
let utc_datetime: DateTime<Utc> = DateTime::parse_from_rfc3339("2025-01-01T00:00:00Z").unwrap().into(); println!("{}", utc_datetime.timestamp()); let utc_datetime2: DateTime<Utc> = DateTime::parse_from_rfc3339("2025-01-02T00:00:00Z").unwrap().into(); println!("{}", utc_datetime2.timestamp()); // 86400 println!("{}", utc_datetime2.timestamp() - utc_datetime.timestamp());
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.24s
Running `target/debug/app`
1735689600
1735776000
86400
経過時間は、unixtimeの差を86400で割れば日数となるので、
let base_date = "2025-01-01T00:00:00Z".to_string(); let utc_datetime: DateTime<Utc> = DateTime::parse_from_rfc3339(&base_date).unwrap().into(); let utc_datetime2: DateTime<Utc> = Utc::now(); println!("{}", utc_datetime2.timestamp()); println!("{}", (utc_datetime2.timestamp() - utc_datetime.timestamp()) / 86400);
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.67s
Running `target/debug/app`
1741587141
68
1月1日から、68日経過していることになる。