TIme::Moment+Time::Strptime=

21
Kansai.pm #16 id:karupanerura Time::Moment + Time::Strptime =

Transcript of TIme::Moment+Time::Strptime=

Kansai.pm #16id:karupanerura

Time::Moment+ Time::Strptime= 💪

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..

日時処理

日時処理• 日付や時刻に関する処理• 単純な計算にならない

• タイムゾーン• うるう年 /うるう秒• 月またぎ

タイムゾーン• 時差を管理する概念

• UTC(世界標準時 )からの時差=>オフセット• 地域ごとに決まっている

• (現在の )日本だったら全域 JST-9(Asia/Tokyo)

• サマータイムもタイムゾーンで管理

Yokohama.pm #10http://www.slideshare.net/karupanerura/yokohamapm-10

Time::Moment

Time::Moment

• 日時処理モジュール• シンプル• 高速• 不変性

シンプル• 固定オフセットのみをサポート

• サマータイムなどは考慮しない• 秒ベースで計算

高速• 基本的に全ての処理が Cで書かれている• c-dt という Cライブラリの Perlバインディング

不変性• 同じインスタンスは必ず同一の日時を指す• 副作用が最小限になる

どれくらい速いか=> DEMO

弱点

Time::Momentの弱点• 任意フォーマットの日付の parseが不可能

• from_stringはあるがフォーマットは固定

• システムのタイムゾーン /ロケールに依存

Time::Momentの弱点• 任意フォーマットの日付の parseが不可能

• from_stringはあるがフォーマットは固定

• システムのタイムゾーン /ロケールに依存↑ Time::Strptime

↑DateTimeX::Moment

Time::Strptime

Time::Strptime

• 拙作の汎用の strptime実装• Pure Perlで動く• 高速

• 昨日、 1.00が出ました

Time::Momentと組み合わせる• Time::Momentで strptimeできるようになる!

• 弱点がひとつ解決!

DEMO

まとめ• Time::Momentは良い• Time::Strptimeと組み合わせると最強• 💪💪💪💪💪💪💪💪💪💪💪💪

💪💪💪