java - 在 Java 中,我们如何将时间四舍五入到最接近的小时和分钟?

标签 java time

我有一个有时间的字符串。我需要将它四舍五入到最近的小时和最近的分钟。我如何在 Java 中做到这一点? 例如:String time="12:58:15"; 我需要将其四舍五入为 1:00:00 和 12:58:00

最佳答案

对于日历操作,您必须使用 Calendar 类。在你的情况下你会做这样的事情:

package test;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class TestDate {

    public static void main(String[] args) {
        Calendar c = new GregorianCalendar();
        c.set(Calendar.HOUR_OF_DAY, 12);
        c.set(Calendar.MINUTE, 58);
        c.set(Calendar.SECOND, 15);
        Date d = c.getTime();

        System.out.println("Start point: " + d.toString());
        System.out.println("Nearest whole minute: " + toNearestWholeMinute(d));
        System.out.println("Nearest whole hour: " + toNearestWholeHour(d));
    }

    static Date toNearestWholeMinute(Date d) {
        Calendar c = new GregorianCalendar();
        c.setTime(d);

        if (c.get(Calendar.SECOND) >= 30)
            c.add(Calendar.MINUTE, 1);

        c.set(Calendar.SECOND, 0);

        return c.getTime();
    }

    static Date toNearestWholeHour(Date d) {
        Calendar c = new GregorianCalendar();
        c.setTime(d);

        if (c.get(Calendar.MINUTE) >= 30)
            c.add(Calendar.HOUR, 1);

        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);

        return c.getTime();
    }

}

结果:

Start point: Tue Nov 22 12:58:15 CET 2011
Nearest whole minute: Tue Nov 22 12:58:00 CET 2011
Nearest whole hour: Tue Nov 22 13:00:00 CET 2011

关于java - 在 Java 中,我们如何将时间四舍五入到最接近的小时和分钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8233236/

相关文章:

Java - 为什么没有基于返回类型的方法重载?

java - 尝试生成 stub 文件时出错

Java LibGDX 如何解析 JSON?

delphi - 如何将德尔福本地时间转换为UTC时间?以及如何将其从 UTC 转换回本地时间?

javascript - 如何使用 javascript 获取最后一整天的时间戳

java - 从Camel消息体获取HttpServletRequest和HttpServletResponse

java - Tomcat启动报错如何解决?

java - 如何检查毫秒时间戳是否在我当前时区的午夜?

javascript - 如何获取在 JavaScript 中上传的文件的修改时间?

string - 字符串 2h 而不是 2h0m0s 的持续时间