perl5の日付時刻処理とか
Upcoming SlideShare
Loading in...5
×
 

perl5の日付時刻処理とか

on

  • 1,276 views

Yokohama.pm #10

Yokohama.pm #10

Statistics

Views

Total Views
1,276
Views on SlideShare
801
Embed Views
475

Actions

Likes
1
Downloads
1
Comments
0

5 Embeds 475

http://karupanerura.hateblo.jp 339
http://techblog.karupas.org 107
https://twitter.com 21
http://feedly.com 6
http://s.deeeki.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    perl5の日付時刻処理とか perl5の日付時刻処理とか Presentation Transcript

    • perl5の日付時刻処理とか id:karupanerura 14年2月21日金曜日
    • だれなの??????? @karupanerura ソシャゲエンジニア MF CPAN Author Perl/JS/Java/Emacs/etc... ビールのみたい 14年2月21日金曜日
    • 日付時刻処理とは epoch <-> YMDHMS形式相互変換 timezone処理 加減演算 差分計算 比較演算 14年2月21日金曜日
    • 処理する方法 epochでがんばる! localtime/gmtimeでがんばる! 日付時刻処理ライブラリをつかう 14年2月21日金曜日
    • 処理する方法 epochでがんばる! localtime/gmtimeでがんばる! 日付時刻処理ライブラリをつかう 14年2月21日金曜日
    • どのライブラリを使うか DateTime Time::Piece Date::Simple Time::Moment etc.... 14年2月21日金曜日
    • DateTime YMDHMSをベースに計算 加減演算が正確かつ柔軟に出来る が遅い 仕様が分かりにくい部分もあるが慣れ次第 枯れていて安心して使える Perl5の標準的な日付処理ライブラリ 14年2月21日金曜日
    • 基本的なつかいかた perldoc DateTime 14年2月21日金曜日
    • くわしいつかいかた perldoc DateTime 14年2月21日金曜日
    • DateTimeの罠(1) 引用元: http://blog.64p.org/entry/20070904/1188877834 14年2月21日金曜日
    • DateTimeの加減算 DateTime::Durationに移譲されている 月末をどのように処理するかを指定可能 wrap mode (default) 月末を跨ぐ limit mode 月末を超えたら月末にあわせる preserve mode limit mode && 月末を維持する 14年2月21日金曜日
    • DateTimeの罠(2) $datetime->add(...) $datetime自身が書き換わる cacheしにくい 常にcache値のcloneを返すなどで対処 14年2月21日金曜日
    • Time::Piece 秒をベースに計算 月/年の加減演算などは正確性に欠ける 秒ベースで計算するので高速に動作する 仕様が分かりにくい部分もあるが慣れ次第 1.20未満に致命的なバグがある Perl5の新標準的な日付処理ライブラリ 14年2月21日金曜日
    • 基本的なつかいかた perldoc Time::Piece perldoc Time::Seconds 14年2月21日金曜日
    • くわしいつかいかた perldoc Time::Piece perldoc Time::Seconds 14年2月21日金曜日
    • Time::Pieceの罠(1) localtime + ONE_DAY localtime(+ ONE_DAY)と解釈される localtime() + ONE_DAY Time::Piece->strptime(...) GMTで解釈される localtime->strptime(...) 14年2月21日金曜日
    • Time::Pieceの罠(2) localtime() + ONE_MONTH 1ヶ月くらいの秒数が加算される だいたい1ヶ月後くらいの日付がわかる localtime() + ONE_YEAR 1年くらいの秒数が加算される だいたい1年後くらいの日付がわかる 14年2月21日金曜日
    • Date::Simple 日をベースに計算 日付演算に特化したライブラリ epochベースと同様シンプルなので高速 timezoneが統一されている状況で便利 日付の比較だけでもDateTimeより約150%高速 日付演算だけで十分な状況では便利 14年2月21日金曜日
    • Date::Simpleの罠 特にハマった事ない なにかあったら教えて下さい! 14年2月21日金曜日
    • Time::Moment 秒をベースに計算 秒ベースで計算するので高速に動作する しかし加減演算が正確に出来る preview releaseな新興勢力(現在: v0.14) 同氏(CHANSEN)作の c-dt がベース Cで実装された日付時刻処理ライブラリ 14年2月21日金曜日
    • ※まだprojectで使ったことないです 14年2月21日金曜日
    • ここがイケてる(1) objectがimmutable $tm->plus_hour(3) とかカジュアルに cacheしやすい (plus|minus)_(hour|year)が正確 DateTime::Durationのlimit mode相当 月末の処理方法は選べない 14年2月21日金曜日
    • ここがイケてる(2) Serializeのサポート serialize方法を利用者が考えなくて良い timezoneはoffsetで指定 タイムゾーン名を管理しない DateTime::TimeZoneとの併用で なんかめっちゃ高速 Time::Pieceの1.5倍~20倍くらい高速 14年2月21日金曜日
    • だいぶイケてるきがする!! 14年2月21日金曜日
    • もっと便利にしたい strptime相当の機能が無い from_stringはフォーマット固定 用途によっては十分? DateTime::TimeZone 依存したくない? Time::Zone的なモジュールがあるといい? 14年2月21日金曜日
    • Time::Strptime 拙作(githubのみ) PurePerlでちょびちょび作ってる epochを返すstrptime(3)っぽい機能を提供 localeどうしよう? timezone指定どうしよう? そもそも必要? 14年2月21日金曜日
    • Time::Strptime::libc 拙作(githubのみ) libcのstrptime(3)/mktime(3) で同様の機能 windowsで使えない? なんでCPANにこういう感じのないの? 深遠な理由があるの? 14年2月21日金曜日
    • まとめ 罠にきをつけよう ライブラリの仕様はちゃんと理解して使う Time::Moment便利そう がんがん使おう ビールのみたい 14年2月21日金曜日