こんばんわ
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 件のコメント:
コメントを投稿