電気ウナギ的○○

About Home

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

shinoda (2011年3月 6日 15:48)

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

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1501

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE