VB.NET でも UNIX のエポックタイムが使いたい

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 で割ったもの(小数点以下は切り捨て)を使えばええっちゅうわけやね。

トラックバック(0)

このブログ記事を参照しているブログ一覧: VB.NET でも UNIX のエポックタイムが使いたい

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1501

コメントする

このブログ記事について

このページは、shinodaが2011年3月 6日 15:48に書いたブログ記事です。

ひとつ前のブログ記事は「岩国で幻の「広島焼き」に出会うとは!(笑)」です。

次のブログ記事は「VisualBasic の FtpWebRequest って、FTP プロキシ使えないんでやんの」です。

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


月別 アーカイブ

電気ウナギ的○○ mobile ver.

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