【问题标题】:Timestamp to Date issue时间戳到日期问题
【发布时间】:2014-07-30 13:32:11
【问题描述】:

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

我的错误可能是什么?

谢谢!

【问题讨论】:

    标签: java date timestamp


    【解决方案1】:

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

    【讨论】:

    • 我不需要输出我的日期,而是检查该日期是否等于其他日期。我该如何解决?
    • 应该相等,只要自 epoch 以来的底层毫秒是相同的。这不考虑时区。如果它们不相等,您关于02:00:00 CEST 的帖子会产生误导。您需要提供失败的平等。对这两个值进行 get millis 并进行比较。应该为您指明正确的方向。
    • 所以你说检查时间戳是否相等?如果是这样,我只需要检查日-月-年而不是小时-分钟-秒。如何通过代码进行操作?
    • 我认为您需要重新提出或编辑您的问题,以显示失败的代码。上述问题的问题(休息2小时)已得到解答。如果没有明确的代码向我们展示失败的原因,很难猜测还有什么问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多