誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型/TimeStamp型の変換方法のまとめにC#が無いので追加

誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型/TimeStamp型の変換方法のまとめ – Yuta.Kikuchiの日記.

例のごとくC#が無いので勝手に追加する。VBも基本一緒だ。

ついカッとなってやったが、後悔はしていない。

.NET Frameworkで日付、時刻を扱うのはDateTime型(クラス)だ。

現在時刻の取得

当然C#なら何も悩まない。悩む必要など無い。

現在時刻のTimeStamp取得

.Net Framewrokは当然UnixのTimeStampなんて知ったこっちゃ無いのでこれは変換が必要。
DateTime型は1970からとかケチくさいことは言わず西暦1年からのシリアル値を内部的に持つので、以下のように1970/1/1までの時刻値を求めて、現在時刻(UTC)との差分をとるように計算する。

DateTime => TimeStamp変換

先ほどの逆になるが、秒数単位で足し込むためのメソッドが用意されているのでコードは楽な感じになる。

C#でのまとめ

そもそもUnixのTimeStampとかめんどくさい。WindowsならFILETIMEかVT_DateだろJK。ま、.NETのDateTimeはそのどっちでも無いけどな。
日付の文字列変換は、このサンプルのような固定変換じゃ無くて、よい子はユーザーロケールの設定使うようにしようね。
こんな事毎回書いているのはめんどくさいので、よい子はヘルパークラスのライブラリ作って、DateTime型の拡張クラスにしましょう。

異論は認める。

全体コード:
(ご要望によりDateTimeOffsetでのコードも追加 23:26)

.NET Framework 4.6以降 (2015/10/14追記)

.NET Framework 4.6以降ではDateTimeOffset型にUNIX時間との変換メソッドが追加されたので、特に悩む必要は無くなっている。

サンプルコード:

全コードのGist

https://gist.github.com/ishisaka/bc7076aa83ef37b4f832

「誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型/TimeStamp型の変換方法のまとめにC#が無いので追加」への5件のフィードバック

コメントを残す