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 · 最終更新: by nullpon