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
関数からの影響を受けています。