如题,我该如何把这个131460562376400000转换为java的yyyy-mm-dd HH:mm:ss.SSS呢,试过了以下方法都不得行!
/**
* 将C#的ticks值转换成Java的yyyy-mm-dd HH:mm:ss.SSS
*
* @param ticks
* @return
*/
public static String fromDnetTicks2JdateString(long ticks) {
TimeZone timeZone = TimeZone.getDefault();
long TICKS_PER_MILLISECOND = 10000;
long TICKS_AT_EPOCH = 621355968000000000L;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Calendar calendar = Calendar.getInstance(timeZone);
calendar.setTimeInMillis((ticks - TICKS_AT_EPOCH) / TICKS_PER_MILLISECOND);
calendar.setTimeInMillis(calendar.getTimeInMillis() - calendar.getTimeZone().getRawOffset());
return sdf.format(calendar.getTime());
}
这看起来像是filetime.
windows filetime 是 从1601-01-01T00:00:00Z开始计算,单位是100纳秒,
unix timestamp 是从1970-01-01T00:00:00Z开始计算,单位是秒/毫秒,
所以从 windows filetime 转化为 unix timestamp 的公式是
其中的 116444736000000000 就是 1601-01-01T00:00:00Z 到 1970-01-01T00:00:00Z 的ticks 差值了。
有unix timestamp ,在Java中应该就是可以使用了。