Chronoはグレゴリオ暦における正確な日付と時刻操作に必要なすべての機能を提供します:
DateTime
型はデフォルトでタイムゾーンを認識し、同時にタイムゾーン非依存型も提供しますOption
またはMappedLocalTime
を返しますLocal
タイムゾーンはOSの現在タイムゾーンで動作しますChrono-TZ
またはtzfile
クレートを使用してくださいChronoは様々な実行環境とOSをサポートし、いくつかの有効化/無効化可能な機能を持ちます
alloc
:メモリ割り当てに依存する機能(主に文字列フォーマット)を有効化std
:標準ライブラリに依存する機能を有効化。alloc
のスーパーセットで、標準ライブラリ型との相互運用を追加clock
:ローカルタイムゾーン(Local
)読み取り機能を有効化。now
のスーパーセットnow
:システム時刻(now
)読み取り機能を有効化wasmbind
:wasm32ターゲット向けにJS Date APIとのインターフェースを提供serde
:serdeによるシリアライズ/デシリアライズを有効化rkyv
:非推奨、代わりにrkyv-*
機能を使用rkyv-16
、rkyv-32
、rkyv-64
:rkyvによるシリアライズ/デシリアライズを有効化(それぞれ16/32/64ビット整数使用)rkyv-validation
:bytecheckによるrkyv検証サポートを有効化arbitrary
:Arbitraryクレートを使用して型の任意インスタンスを構築unstable-locales
:ローカライゼーションを有効化。_localized
サフィックス付きの各種メソッドを追加ChronoはTimeDelta
型で時間スパンを表現します。これは秒とナノ秒で表される「正確な」期間で、「日」や「月」などの「名目上」の要素は含みません
TimeDelta
型は以前Duration
という名前でした(現在も型エイリアスとして利用可能)。類似のcore::time::Duration
との主な違いは符号付き値である点です
ChronoはDateTime
型でタイムゾーン内の日付と時刻を表現します
DateTime
はタイムゾーンを認識し、TimeZone
オブジェクトから構築する必要があります。主要なTimeZone
実装は3つ:
Utc
:UTCタイムゾーンを指定。最も効率的Local
:システムのローカルタイムゾーンを指定FixedOffset
:UTC+09:00やUTC-10:30などの任意の固定オフセットタイムゾーンを指定異なるTimeZone
型のDateTime
は互換性がなく混在できませんが、DateTime::with_timezone
メソッドで相互変換可能です
現在の日付と時刻はUTC(Utc::now()
)またはローカルタイムゾーン(Local::now()
)で取得できます
また、独自の日付と時刻も作成可能です:
フォーマットはformat
メソッドで行い、strftimeと同等のフォーマットを使用します
デフォルトのto_string
メソッドと{:?}
指定子も適切な表現を提供します。Chronoは一般的なフォーマット用にto_rfc2822
とto_rfc3339
メソッドも提供します
Chronoは現在、追加のCライブラリなしでほぼすべての言語の日付フォーマットをサポートします。この機能はunstable-locales
機能で利用可能:
解析には2つの方法があります:
FromStr
トレイト(および文字列のparse
メソッド)でDateTime<FixedOffset>
、DateTime<Utc>
、DateTime<Local>
値を解析可能DateTime::parse_from_str
はオフセット付き日付時刻を解析し、DateTime<FixedOffset>
を返しますDateTime::from_timestamp(seconds, nanoseconds)
でUNIXタイムスタンプからDateTime<Utc>
を構築
DateTime.timestamp
でDateTime
からタイムスタンプ(秒単位)を取得。さらにDateTime.timestamp_subsec_nanos
でナノ秒部分も取得可能