言語による日付保持方法の違い。(JAVA and C#)
サーバーとクライアント(スマホ)などで言語が違っている場合。
時間を数値として受け渡す場合に問題が発生することがあります。
JAVAのDateクラスと.NETのDateTimeクラス
Javaは1970-01-01 00:00:00からの経過時間になっている
.NETは0000-01-01 00:00:00からの経過時間になっている
そのためJAVAのDate.getTime()とC#のDateTime.Ticks()では取得できる値が違う。
変換してあげる必要があります。
最初は全然知らないでやってたんで日付が全然合わなくてなんでだろうという話になりました。
微妙な違いがあるんですね。
private static final long EPOCH_VALUE = 62135596800000L;//0000年から1970年までのミリ秒
private static final int RATE_100NANOSECONDE_PERMILLISECOND = 10000;// JAVAのミリ秒化成を.NETナノ秒に変換
public static long convertSecondToDotNet(long milliSeconds) {
// (JAVA的毫秒数 + "1970-01-01 00:00:00.000"的毫秒数) * 10000
return (milliSeconds + EPOCH_VALUE) * RATE_100NANOSECONDE_PERMILLISECOND;
}
// .NETのナノ秒をJAVAのミリ秒に変更
public static long convertSecondFromDotNet(long hundredNanoSeconds) {
// .NET百纳秒 / 10000 - "1970-01-01 00:00:00.000"的毫秒数
BigDecimal dec = new BigDecimal(hundredNanoSeconds);
dec = dec.divide(BigDecimal.valueOf(RATE_100NANOSECONDE_PERMILLISECOND));
return dec.longValue() - EPOCH_VALUE;
}