異邦人になってみた~上海の人 

読者です 読者をやめる 読者になる 読者になる

異邦人になってみた~上海の人 

上海在住です。中国時代劇をよく見ています、中国旅行の事、weiboやQQの設定、一眼レフカメラの写真掲載、上海での日々の生活情報を書いています

 記事一覧表示
スポンサーリンク

C#とJAVAの日付(DateTimeとDate)の違い。

プログラム C# JAVA

言語による日付保持方法の違い。(JAVA and C#

サーバーとクライアント(スマホ)などで言語が違っている場合。
時間を数値として受け渡す場合に問題が発生することがあります。
JAVAのDateクラスと.NETのDateTimeクラス
Java1970-01-01 00:00:00からの経過時間になっている
.NET0000-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;
}