現在、(サーバーから) ティック (.NET 日付) として返される日付スタンプがあります。
一般に、10000 を減算して秒を生成し、それに応じてオフセットして EPOC ミリ秒を取得することで、上記を変換することができました。
ここでの問題は、サーバーから渡されたミリ秒にゾーン オフセットが含まれていることです。私がする必要があるのは、ゾーンの TimeZone オブジェクトを取得し (常に同じ)、元の値からミリ秒オフセット (DST に応じて) を減算して生成することです。 Date を適切に取得するための新しいオブジェクト。
多くの変換なしでこれを行うより良い方法はありますか?
private static long netEpocTicksConv = 621355968000000000L;
public static Date dateTimeLongToDate(long ticks) {
TimeZone greeceTz = TimeZone.getTimeZone("Europe/Athens");
Calendar cal0 = new GregorianCalendar(greeceTz);
long time = (ticks - netEpocTicksConv)/ 10000;
time -= greeceTz.getOffset(time);
cal0.setTimeInMillis(time);
Date res = cal0.getTime();
return res;
}