Perl: 2011年3月アーカイブ

Perl プログラマ(つーか UNIX系のプログラマ)なら誰でも Epoc Time を処理のトリガーに使うのはよくあるだろう。
例えば、データの作成日時として記録しておき、現在の Epoc Time との差で秒数が求められるので、24時間以上前に作ったデータかどうかチェックするなら、

if ((time - $sakusei_epoc) >= (24 * 60 * 60)) {
    ほげほげ処理;
}

とかね。

実際、日付を「2011-03-06 15:33:27」みたいな文字列で管理するのは面倒くさいからなあ。(人間が見ないのであれば、そのまま Epoc Time で書き出しておくのが、色々便利)

ちなみに、UNIX の Epoc Time というのは、「1970/01/01 00:00:00」からの経過秒のことである。
例えば「2011-03-06 15:33:27」は、「1970/01/01 00:00:00」から 1,299,393,207秒経過している。
だから、Perl で「2011-03-06 15:33:27」に、

print (time);

ってすると、1299393207 が表示される。

で、一応、Visual Basic.NET にも「経過時間」というのはあるんだけど、「0001/01/01 00:00:00」からの、100ナノ秒単位での経過時間なのだ。
だから、「2011-03-06 15:33:27」に、

Dim now As DateTime = DateTime.Now
Console.WriteLine(now.Ticks())

ってすると 634350224076061874 が表示される。

例えば、UNIX で作成したファイルに Epoc TIme が書かれていて、VB.NET のプログラムでその値と現在の時間を比較しようとすると問題があるんじゃね。

つーことで、

Dim epocTime As Long = (DateTime.Now.Ticks - DateTime.Parse("1970/01/01 00:00:00").ToLocalTime.Ticks) \ 10000000

みたいに、経過100ナノ秒から 1970/01/01 までの時間を引いて、それを 10000000 で割ったもの(小数点以下は切り捨て)を使えばええっちゅうわけやね。

このアーカイブについて

このページには、2011年3月以降に書かれたブログ記事のうちPerlカテゴリに属しているものが含まれています。

前のアーカイブはPerl: 2011年2月です。

次のアーカイブはPerl: 2011年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら