我目前(从服务器)有一个以刻度(.NET 日期)形式返回的日期戳。
一般来说,我设法通过减去 10000 来转换上述内容以产生秒并相应地偏移以获得 EPOC 毫秒。
现在,问题是从服务器传递的 ms 包括区域偏移量,我需要做的是获取区域的 TimeZone 对象(始终相同)并从原始值中减去 ms 偏移量(取决于 DST)以产生正确获取日期的新对象。
没有这么多转换的任何更好的方法?
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;
}