現在日時を取得する

現在日時を取得する。Chronoクレートが必要になるので、Cargo.tomlに依存関係を追加する。

[dependencies]
chrono = "0.4"

現在日時はLocal::now()で取得できる。now()からはDateTimeが得られるので、format()で日時をフォーマットできる。

use chrono::Local;

fn main() {
    // 現在日時を取得する。
    let dt = Local::now();
    println!("{}", dt);
    println!("{}", dt.format("%Y年%m月%d日 %H:%M:%S"));
}
2021-01-19 19:03:22.798315700 +09:00
2021年01月19日 19:03:22

ローカル時刻だけでなく、UTCもUtc::now()から取得できる。

use chrono::Utc;

fn main() {
    // 現在日時(UTC)を取得する。
    let dt = Utc::now();
    println!("{}", dt);
    println!("{}", dt.format("%Y年%m月%d日 %H:%M:%S"));
}
2021-01-19 10:04:22.979478300 UTC
2021年01月19日 10:04:22

UNIX時刻で良いならSystemTime::now()も使える。

use std::time::SystemTime;

fn main() {
    // UNIX時刻を取得する。
    println!("{:?}", SystemTime::now());
}
SystemTime { tv_sec: 1611050766, tv_nsec: 338082100 }

UNIXエポックからの経過秒数を取得したいなら、このようになるだろう。因みに、UNIX時刻はうるう秒を考慮していない(1970年1月1日 00:00:00から実際に経過した秒数とUNIX時刻は一致しない)。

    println!("UNIX時刻: {}秒", SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs());
UNIX時刻: 1611050766秒

先述のDateTimeからもtimestamp()でUNIX時刻を得ることができる。

    // ローカル時刻からUNIX時刻を取得する。
    println!("From Local: {}秒", Local::now().timestamp());
    // UTCからUNIX時刻を取得する。
    println!("From Utc: {}秒", Utc::now().timestamp());
From Local: 1611050766秒
From Utc: 1611050766秒
(2021/01/20)

新着情報
【Rust Tips】Actix webでJSONをPOSTする
【Rust Tips】コマンドライン引数を取得する
【Rust Tips】現在日時を取得する

Copyright© 2004-2021 モバイル開発系(K) All rights reserved.
[Home]