はじめに
0.19のtime周りを調べました
こっちの記事の二番煎じです
自分が使うところをまとめ直したいうか、今のお仕事プロジェクトの備忘録的なのです
package概略
いつもは関連package全部一応みてるんですがtime, date周りはめんどうになったので全部は見てません。あとは頼んだ
いにしえ編
0.18までの状況を先に復習します
elm-lang/core/Time
elm-lang/core/Date
古いpackageはサイトでは検索に引っかからないのでないように見えますが普通にpackage名指定すれば見えます
TimeとDateがあったよー、TimeはFloatだったよーって感じです
現代編
READMEにいろいろ書いてあるのでgoogle翻訳かけて読んできてください
読みましたか?読みましたね?まあ読まなくてもいいですけど
Human Readableなどviewのための都合!PosixとZoneこそが正義!ってなりました?まあ状況に応じて考えましょう
Date型がなくなってPosix timeとZoneを組み合わせて日付等は算出するようになった感じです
Posix timeはwikipediaによると1970年1月1日午前0時0分0秒から形式的な経過秒数として表される
らしいです
type Posix = Posix Int
Intですね
elm/*
で提供されてる関連packageは他にはありません。readmeに書いてあったようにあとはちょっとコミュニティでいろいろやってみてねって感じです
ISO 8601編
rtfeldman/elm-iso8601-date-strings
安心と信頼のfeldmanです
ISO 8601はyyyy-MM-ddTHH:mm:ss
のような日付形式です
APIから送ってくる値がこの形式ならこのpackageを使って変換しましょう
decoderもついてるので組み込めます
TimeZone編
readmeに書いてありましたが IANA Time Zone Databaseとかいうのがあってtime zoneが登録されているらしいです。package作ってねみたいに書いてありましたがそれがこれです
Zoneを引けるようになってます
わたしはviewに上からZoneを渡していくのが面倒だったのでasia__tokyo
をそのまま使ってます。日本でしか使わないアプリだし、いいよね……
Extra編
日付や時間に一個ずつ変換するのがめんどうな人ように一気に変換する関数や、算術関数が入ってます(日付単位や時間単位で足したりするやつ)
こちらはtimeの拡張で下がDateの拡張です
現代によみがえるDate編
Rata Die
という日付に数字を割り付ける方法を下に敷いたpackageみたいです
算術系、比較系、フォーマットなどが入ってます
フォーマットがちょっと便利かなと思いましたが、自分でやればいい気もします
使い方
現プロジェクトの現状
- 基本Model内はPosixを持つ
- API経由で受けるときは
Iso8601.decoder
で変換します - Zoneはめんどうになったので
TimeZone.asia__tokyo
を固定値で使ってます- 動的に変えないといけなくなったら考えます
- view内でZoneとDate.formatで文字列に変換してます
- スケジューリング機能をそのうち付ける予定なのでユーザーが入力する日付の形式その他はそのときにまた考える
終わり
ということでjustinmimbsのpackage紹介でした