2017年10月1日日曜日

perl Date::Manip で時刻のフォーマットを扱う

こんばんわ

perlで日付を扱う方法についてです。日付のフォーマットが色々な形式があるので、読みこんだ後に自分でどんなフォーマットなのか判断して、フォーマットに従って処理を行うなんていう面倒なことをやっていたのですが、それを簡単に一発で行えるような仕組みはがないはずはないということで色々と探して見たところ、やはり一発で行える仕組みがあったようです。

例えば以下のように書きます。

#!/usr/bin/perl
use strict;
use warnings;
use Date::Manip;
my $orig;

$orig = "now";
printf("%s\n", UnixDate( ParseDate($orig), "%Y/%m/%d %H:%M:%S") );


結果は、

2017/10/01 17:47:11

です。

こんな指定をしたら、
$orig = "May 8 21:38:55 ";

結果は
2017/05/08 21:38:55


こんな指定でも、
"5/8 21:38:55 ";

結果は
2017/05/08 21:38:55

です。

yesterday と指定したら、

こんな感じでした。
2017/09/30 17:54:07
今日は10/1 なので昨日になっています。

なんかすげ。

人間がどんどんバカになりそう。

2017/10/01 追記

指定された文字列が処理できないものだった時に、変数が定義されず、普通に処理するとエラーになってしまうようなので、変数が定義されていなかったらエラーにする処理を書いた方が良いようです。以下のようにするのはいかがでしょうか?

$result = UnixDate( $orig,"%Y %m %d %H %M %S");
if ( defined($result) ){
print "$result\n";
} else {
print "error\n";
}




0 件のコメント:

Apple silicon の mac でGPUの使用率をもっとよく知りたい

 こんにちは 世間はゴールデンウィークとのことですが、せっかくの休みというのに何もやることがないわたくしは、いつもの通り家で映画やドラマを見ていたり、ゲームをしたり、まさに今やっていますが、ブログに意味のないことを書いてみたりしています。 もともとものすごく出不精のわたくしは、旅...