C#でUnixエポックタイムを取得する.
C#の
DateTime.Now.Tick
の値は,0000年1月1日からの秒数.UNIX Epoch Timeは1970年1月1日で,互換性がない.
つか,Windowsでしか使わないとか,サーバーに接続しないとかならいいけど.
で,いまC#とFlexをクライアント,Java(Teeda+S2Dao+Jsonic)をサーバーにしてデータのやり取りをするシステムを作っているんだけれど,取得できる時刻がバラバラでいらいらしていた.
…世の中には
Epoch Converter - Unix Timestamp Converter
とか,素晴らしいことをやってくれている人がいた.
というわけで,適当にクラスを作った.
using System; using System.Collections.Generic; using System.Text; namespace com.semcode.wii.db.util { public class UnixEpochTime { public const long EPOCH = 621355968000000000; public static long now() { return (DateTime.Now.ToUniversalTime().Ticks - EPOCH) / 10000; } public static long toUnixEpochTime(long time){ return (time - EPOCH) / 10000; } } }
このクラスの
UnixEpochTime.now();
で取得できる値はJavaの
new Date().getTime();
や、PHPの
<?php echo time() ?>
と互換性のある値です.あー3時間くらい悩んだ.