rust:chrono
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
rust:chrono [2022/07/05 02:24] – 作成 nullpon | rust:chrono [2023/02/22 08:27] (現在) – nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== chrono ====== | + | < |
+ | |||
+ | # Chrono | ||
Rustで日付・時刻を扱うライブラリ、事実上スタンダードになっている。タイムゾーンを扱う場合はchrono-tzを使う | Rustで日付・時刻を扱うライブラリ、事実上スタンダードになっている。タイムゾーンを扱う場合はchrono-tzを使う | ||
行 5: | 行 7: | ||
- | ===== 設定 | + | ## 設定 |
Cargo.tomlに追加 | Cargo.tomlに追加 | ||
行 15: | 行 17: | ||
``` | ``` | ||
- | ===== 現在日時の取得 | + | |
+ | ## 現在日時の取得 | ||
ローカルタイムゾーンで現在日時を取得 | ローカルタイムゾーンで現在日時を取得 | ||
行 26: | 行 29: | ||
``` | ``` | ||
- | ローカルタイムゾーンで指定した日時を取得。ymd, | ||
- | ``` | + | ## 指定時刻の取得 |
+ | |||
+ | 年月日時分秒を指定してDateTimeを取得 | ||
+ | |||
+ | ```rust | ||
use chrono:: | use chrono:: | ||
- | let dt = Local.ymd(2022, 7, 5).and_hms(10, 14, 31); | + | let result |
- | println!(" | + | |
``` | ``` | ||
+ | |||
+ | `use chrono:: | ||
+ | |||
+ | 日付が正しい場合は`single`が`Some< | ||
+ | |||
+ | ```rust | ||
+ | let dt = Local.with_ymd_and_hms(2022, | ||
+ | println!(" | ||
+ | ``` | ||
+ | |||
+ | 日付指定が不正な場合や、日付が1通りに定まらない場合、`single`は`None`を返す | ||
+ | |||
+ | ```rust | ||
+ | let dt = Local.with_ymd_and_hms(2022, | ||
+ | println!(" | ||
+ | ``` | ||
+ | |||
+ | アメリカ東海岸では夏時間の終了によって2023年11月5日1時30分という日時が2回発生するため1通りに定まらない | ||
+ | |||
+ | ```rust | ||
+ | let dt = chrono_tz:: | ||
+ | println!(" | ||
+ | ``` | ||
+ | |||
+ | このような場合は`single`ではなく`earliest`、`latest`というメソッドでそれぞれの日時を取得できる | ||
+ | |||
+ | ```rust | ||
+ | let result = chrono_tz:: | ||
+ | |||
+ | println!(" | ||
+ | println!(" | ||
+ | ``` | ||
+ | |||
+ | matchで切り分けも可能 | ||
+ | |||
+ | ```rust | ||
+ | let result = Local.with_ymd_and_hms(2022, | ||
+ | match result { | ||
+ | LocalResult:: | ||
+ | LocalResult:: | ||
+ | LocalResult:: | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | ちなみに過去の日本でもGHQ占領下でサマータイム制が施行されている(1948〜1951年) | ||
+ | |||
+ | ``` | ||
+ | let result = chrono_tz:: | ||
+ | match result { | ||
+ | LocalResult:: | ||
+ | LocalResult:: | ||
+ | LocalResult:: | ||
+ | } | ||
+ | |||
+ | let result = chrono_tz:: | ||
+ | match result { | ||
+ | LocalResult:: | ||
+ | LocalResult:: | ||
+ | LocalResult:: | ||
+ | } | ||
+ | ``` | ||
+ | |||
+ | ``` | ||
+ | invalid date | ||
+ | 1951-09-09 00:30:00 JDT 1951-09-09 00:30:00 JST | ||
+ | ``` | ||
+ | |||
+ | |||
+ | </ |
rust/chrono.1656987871.txt.gz · 最終更新: 2022/07/05 02:24 by nullpon