时间戳到日期问题

时间:2014-07-30 13:32:11

标签: java date timestamp

我试图创建一个将时间戳转换为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

可能是我的错误?

谢谢!

1 个答案:

答案 0 :(得分:2)

您的时区如果错误。请注意,输出为CEST,但您将日历设置为UTC。这两者之间的差值为2小时。输出日期时,需要适当设置时区。