LoginSignup
12
7

More than 5 years have passed since last update.

Elmで日付を扱う0.19編

Last updated at Posted at 2019-04-16

はじめに

0.19のtime周りを調べました

こっちの記事の二番煎じです

自分が使うところをまとめ直したいうか、今のお仕事プロジェクトの備忘録的なのです

package概略

いつもは関連package全部一応みてるんですがtime, date周りはめんどうになったので全部は見てません。あとは頼んだ

いにしえ編

0.18までの状況を先に復習します

elm-lang/core/Time
elm-lang/core/Date

古いpackageはサイトでは検索に引っかからないのでないように見えますが普通にpackage名指定すれば見えます

TimeとDateがあったよー、TimeはFloatだったよーって感じです

現代編

elm/time

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作ってねみたいに書いてありましたがそれがこれです

justinmimbs/timezone-data

Zoneを引けるようになってます

わたしはviewに上からZoneを渡していくのが面倒だったのでasia__tokyoをそのまま使ってます。日本でしか使わないアプリだし、いいよね……

Extra編

justinmimbs/time-extra

日付や時間に一個ずつ変換するのがめんどうな人ように一気に変換する関数や、算術関数が入ってます(日付単位や時間単位で足したりするやつ)

こちらはtimeの拡張で下がDateの拡張です

現代によみがえるDate編

justinmimbs/date

Rata Dieという日付に数字を割り付ける方法を下に敷いたpackageみたいです

算術系、比較系、フォーマットなどが入ってます

フォーマットがちょっと便利かなと思いましたが、自分でやればいい気もします

使い方

現プロジェクトの現状

  • 基本Model内はPosixを持つ
  • API経由で受けるときはIso8601.decoderで変換します
  • ZoneはめんどうになったのでTimeZone.asia__tokyoを固定値で使ってます
    • 動的に変えないといけなくなったら考えます
  • view内でZoneとDate.formatで文字列に変換してます
  • スケジューリング機能をそのうち付ける予定なのでユーザーが入力する日付の形式その他はそのときにまた考える

終わり

ということでjustinmimbsのpackage紹介でした

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7