タグ

perlとtimeに関するkiyo_hikoのブックマーク (5)

  • Perl の timelocal と localtime について - クソネミ( ˘ω˘ )

    2012年5月2日、AtCoder Regular Contest #002 に参戦させていただきました。問題 A, B, C, D の4問が出題されました。私は A, B, C の3問を解きました。この3問は簡単な問題なのですが、問題 B で Perl の localtime, timelocal の仕様を正しく理解していなかったために1度間違い (Wrong Answer; WA) が起こりました。そのためまとめることにします。 1 Perl の localtime と timelocal Perl では UNIX 時刻と日付を変換する関数として localtime と timelocal が用意されています。UNIX 時刻は基準となる時刻からの経過時間を秒単位で表したものです。それぞれ次のようなものです。 localtime UNIX 時刻から日付を得る。 timelocal 日付か

    kiyo_hiko
    kiyo_hiko 2019/06/12
    "結論 Perl はたぶんオワコンでしょう"
  • 現在時刻をマイクロ秒(μs)まで取得する #perl - hito::tech

    検証テストをする際、秒以下の単位(ミリ秒、マイクロ秒、)を取得したい、ということがありました。 perl標準モジュールでできないか調べた結果、以下のコードでマイクロ秒まで取得ができる。。。はず。 コード #!/usr/bin/perl use strict; use warnings; use Time::HiRes qw/ gettimeofday /; my ($epocsec, $microsec) = gettimeofday(); my ($sec,$min,$hour) = localtime($epocsec); printf("%02d:%02d:%02d.%d\n",$hour,$min,$sec,$microsec); 内容 Time::Hiresのgettimeofdayは、エポック秒(UNIX時間)とマイクロ秒2つの要素の配列を返してくれます。 取得したエポックス秒

    現在時刻をマイクロ秒(μs)まで取得する #perl - hito::tech
    kiyo_hiko
    kiyo_hiko 2015/02/02
    アレンジ my ($epoch, $micro) = ::gettimeofday; print ::strftime('%Y/%m/%d %H:%M:%S.', localtime $epoch) . "$micro\n"; ミリ秒まで ::strftime('%Y/%m/%d %H:%M:%S.', localtime $epoch) . do {$micro =~ m|^(\d{3})|; $1} . "\n";
  • Time::HiRes - 高精度のalarm, sleep, gettimeofday, インターバル・タイマー - perldoc.jp

    Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers Time::HiRes - 高精度のalarm, sleep, gettimeofday, インターバル・タイマー 概要¶ use Time::HiRes qw( usleep ualarm gettimeofday tv_interval ); usleep ($microseconds); ualarm ($microseconds); ualarm ($microseconds, $interval_microseconds); $t0 = [gettimeofday]; ($seconds, $microseconds) = gettimeofday; $elapsed = tv_interval ( $t0, [$seconds, $

    kiyo_hiko
    kiyo_hiko 2012/10/11
    gettimeofdayは(エポック秒, マイクロ秒)を返す。strftimeとかと組合せて、yyyy-mm-dd hh:mm:ss.xxxとかの表現が可能になる。「my $s = strftime(...) . sprintf '%03d', (gettimeofday)[1] * 1e-3」
  • Perl 時刻の処理はとりあえずこれで

    Perl 時刻の処理はとりあえずこれで time と localtime と tiimelocal にてとりあえずだいたいの用は足せるんじゃないでしょうか。 time 現在の時刻は関数 time で取得できます。それを変数$tm_nowに入れてみます。 $tm_now = time; これで、変数$tm_nowに1970年1月1日0時0分からの秒数がセットされました。 変数 $tm_now は現在時刻そのものではないですが、でも、それを使って現在時刻が計算できます。 localtime $tm_now は一応現在時刻のようなものなのですが、1970年1月1日0時0分からの秒数を表しているだけなので、そのままでは現在の年月日はわかりません。 そこで、localtime 関数を使って、年月日時分秒の表示に直してやります。 localtime 関数は年月日時分秒だけでなく、曜日や1月1日からの日

    kiyo_hiko
    kiyo_hiko 2012/01/16
    覚えてすぐ忘れるこのへん。メモ
  • Perl:[timegm/timelocal]で「年」引数の仕様の正しい理解と使い方について

    Perl : [ timegm / timelocal ] で「年」引数の仕様の正しい理解と使い方について ~ [ 祝日ロジック( Perl )へ戻る ] (補)  ~ この問題で影響を受ける範囲 ~ [ 2011/3/24 追記 ] 「1900年代の日付([$year-1900]=0~99 になる)を使う事は絶対に無い」という場合には、この問題に 抵触しませんので、[$year-1900] の使い方を続けても全く支障ありません(2000年代以降の日付ならば [$year-1900]の値が3桁になりますので、timegm/timelocalに[1900年からのオフセット]として解釈 して 貰えます)。 「カレンダーツール・日付に関する関数」等の開発に際して、1999年以前もカバーするという仕様を検 討する場合には、この問題に注意を払ってください。引数をエポック秒で受け取る仕

    kiyo_hiko
    kiyo_hiko 2011/09/28
    どうもtimelocalがトンチンカンな結果しか返さなくてPerlェ・・・とキリキリしていたら、巷で言われてる「1900引け」という話自体がウソ子だった。なんだかなあ
  • 1