DateTimeX::Moment
id:karupanerura
Yokohama.pm #14
About me
• Kenta SATO (id:karupanerura)
• Perl/Go/Swift/Kotlin/Java/Crystal/C99/etc..
• Gotanda.pm Author
• Senior Engineer at Mobile Factory, Inc.
• WebApp/iOS/Android/Operation/etc..
DateTimeX::Moment
is 何
DateTime
互換
Time::Moment
Time::Moment
is 何
超速い日時処理ができる
モジュール
ただし
タイムゾーンサポートなし
(固定オフセットのみ)
(システムタイムゾーン依存
)
ロケールサポートなし
(システムロケール依存)
だいたい
問題ない
問題あるときはどうするか
DateTimeX::Moment
=
DateTime::Locale
+
DateTime::TimeZone
+
Time::Moment
めんどい
二度と実装したくない
つくった
https://metacpan.org/pod/Da
teTimeX::Moment
サポートしていない機能
紀元前
week_year
(その週は何年に属すか)
CLDR format
(DateTimeに委譲)
うるう秒の取得
月末処理方法の選択
(limit固定)
まーいらないでしょう(雑)
DEMO
まーそこそこの速度
DateTimeから
パチってきた
テストコードを
PASSしている
DateTimeほど遅くない
使いたい場面があればどうぞ
おわり
え?
まだ時間ありますか?
時間が余ったので
タイムゾーンの小咄をします
タイムゾーン
時差を管理する概念
UTC(世界標準時)
からの
時差を
オフセットと呼ぶ
地域ごとに決まっている
日本
だったら
全域
JST-9
(Asia/Tokyo)
アメリカだと
東海岸と西海岸で
最大4時間
違う
サマータイムも
タイムゾーンで
管理
サマータイム
夏時間
夏に時差をずらす
夏は日が長いので時間をずら
そうぜってどっかのおっさん
が言ったんじゃないかな
日本にも昔あった(JDT)
(1948年 - 1951年)
さて
現時刻から66年9ヶ月前
オフセットは何時間だったか
正解:夏時間なのでJDT
(9+1時間)
正確に計算できるか
Time::Momentでは無理
一部の国では
サマータイムは現役
時代によっては
サマータイムを
採用していたりいなかったり
そもそも標準時の
オフセットが変わったり
そもそも標準時の概念が
出来る前だったり
そもそも人類が
誕生していなかったり
😇
結論
タイムゾーンはむずかしい
扱わなくて良いなら
扱わないほうが
身のため
😇
おわり

DateTimeX::Moment