我试图创建一个将时间戳转换为Date对象的函数。
我的问题是使用this online tools我正确地将时间戳转换为日期,但使用java时它无法正确转换。
这是我尝试的:
public static Date getDateFromUUID(UUID uuid) {
Calendar uuidEpoch = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
uuidEpoch.clear();
uuidEpoch.set(1582, 9, 15, 0, 0, 0);
long epochMillis = uuidEpoch.getTime().getTime();
long time = (uuid.timestamp() / 10000L) + epochMillis;
Calendar start = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
Calendar end = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
start.setTimeInMillis(time*1000);
end.set(start.get(Calendar.YEAR), start.get(Calendar.MONTH), start.get(Calendar.DAY_OF_MONTH),0,0,0);
return end.getTime();
}
我正在尝试使用该uuid:a261ae00-2a9c-11b2-ae56-bcee7be23398
它正确转换为时间戳:1406412000
使用此:
Calendar start = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
Calendar end = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
start.setTimeInMillis(time*1000);
end.set(start.get(Calendar.YEAR), start.get(Calendar.MONTH), start.get(Calendar.DAY_OF_MONTH),0,0,0);
return end.getTime();
我需要删除小时,分钟和秒,只需几年,几个月和几天。 但它将时间戳转换为
Sat Jul 26 02:00:00 CEST 2014
而不是
Sun Jul 27 00:00:00 CEST 2014
可能是我的错误?
谢谢!
答案 0 :(得分:2)
您的时区如果错误。请注意,输出为CEST
,但您将日历设置为UTC
。这两者之间的差值为2小时。输出日期时,需要适当设置时区。