日付を文字列に変換する

Rust:
日付を文字列に変換する

How to: (方法)

use chrono::{DateTime, Utc, Local};

fn main() {
    // UTCで現在の日時を取得して文字列に変換
    let now_utc: DateTime<Utc> = Utc::now();
    println!("{}", now_utc.format("%Y-%m-%d %H:%M:%S").to_string());

    // ローカルタイムゾーンで現在の日時を取得して文字列に変換
    let now_local: DateTime<Local> = Local::now();
    println!("{}", now_local.format("%Y-%m-%d %H:%M:%S").to_string());
}

サンプル出力:

2023-03-14 12:34:56
2023-03-14 21:34:56 // ローカルタイムゾーンに依存

Deep Dive (深掘り)

Rustで日付を文字列に変換するとき、chronoクレートが一般的です。これはRustが標準で提供している日時ライブラリよりも柔軟性とパワーがあります。chronoは.NETのDateTimeやJavaのSimpleDateFormatに触発されました。

選択肢として、timeクレートもありますが、機能はchronoの方が豊富です。したがって、複雑な日付処理が必要な場合はchronoが良いでしょう。

変換の実装時、formatメソッドを使っています。このメソッドでは、フィールドに対応する形式指定子を用いて、出力のフォーマットを細かく指定できます。例えば%Yは4桁の年を、%mは月を2桁で表します。これはC言語のstrftime関数からの影響を受けています。

See Also (参照)