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 件のコメント:

結局 Kindle にケースを買いました。

 こんばんわ 私、最近ほとんど外出しなくなったのですが、妻の買い物に一緒に行って、ぼけーっと待っていたり、病院に行ってぼけーっと待っていたりする機会が多くなり、なんなら家でもボケーっとしていることが非常に多くなったためか、Kindleの出番が結構ありそうです。 前回、タブレットで...