如何将时间缩短到最近的一天?

时间:2015-02-21 14:31:59

标签: java time

对于我的程序,我需要将时间戳(以毫秒为单位)舍入到最近的一天。要回合几个小时,我只是这样做:

private static long roundToHour(long time)
{
    //Add 0.5 hours and then cut off everything unnecessary.
    time += 1800000;
    time = time/(3600000);
    return time*3600000;
}

但是当我试着整天做类似的事情时,代码是2个小时。谁能告诉我为什么?

private static long roundToDay(long time)
{
    time += 43200000;
    time = time/86400000;
    return time*86400000;
}

2 个答案:

答案 0 :(得分:4)

两小时错误是由于时区造成的。

您可以自行添加两小时调整,也可以使用CalendarJoda-Time等库。

如果您自己添加两小时调整,则必须手动考虑夏令时。如果您使用库,将为您处理。日期和时间有很多规则。我强烈建议使用某种类型的库来处理应用程序中的日期和时间。

答案 1 :(得分:0)

你可以很容易地使用java.util.Calendar。

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(time);

cal.get(Calendar.DAY_OF_MONTH);
cal.get(Calendar.HOUR_OF_DAY);
cal.get(Calendar.DAY_OF_WEEK);

因此,您可以轻松找出与结果最近的一天