Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将时间四舍五入到最近的一刻半小时间隔?_Java_Date_Time_Rounding - Fatal编程技术网

Java 如何将时间四舍五入到最近的一刻半小时间隔?

Java 如何将时间四舍五入到最近的一刻半小时间隔?,java,date,time,rounding,Java,Date,Time,Rounding,您知道如何修改下面的代码片段,使其在每季度和每半小时的时间间隔内都能正常工作吗 import java.util.Calendar; import java.util.Date; import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.commons.lang.time.FastDateFormat; public

您知道如何修改下面的代码片段,使其在每季度和每半小时的时间间隔内都能正常工作吗

import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;
import org.apache.commons.lang.time.FastDateFormat;

public class DateRounding {
    public static void main(String[] args) {
        FastDateFormat formatter = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT;

        Date now = new Date();
        System.out.println("now = " + formatter.format(now));       

        // Get nearest second
        Date nearestSecond = DateUtils.round(now, Calendar.SECOND);
        System.out.println("nearestSecond = " + formatter.format(nearestSecond));

        // Get nearest minute
        Date nearestMinute = DateUtils.round(now, Calendar.MINUTE);
        System.out.println("nearestMinute = " + formatter.format(nearestMinute));

        // Get nearest hour
        Date nearestHour   = DateUtils.round(now, Calendar.HOUR);
        System.out.println("nearestHour = " + formatter.format(nearestHour));
    }
}

四分之一是15分钟=15*60*1000毫秒。您可以将此值的一半加到
日期的长值中,除以它,然后再次相乘

同样的半小时

也许你能做到

DateUtils.round(now, 15*60*1000);

有关此信息,请参阅。

Hi!谢谢第一种解决方案有效,但是,我可以请您帮助我解决第二种方案,即DateUtils.round(现在是15*60*1000);,因为它看起来更紧凑和优雅?目前,后者根本不起作用。@eualin-不知道DateUtils API,但我认为第二个参数是毫秒数。在本例中,Calendar.SECOND为1000,Calendar.Minute为60000,依此类推。也许你甚至可以写
15*日历分钟
。但是这应该在API文档中-您确实阅读了您使用的API的文档,不是吗?非常感谢您的回答,但是
15*Calendar.MINUTE
也不起作用?知道吗?什么叫“不工作”?“要么”是什么意思,即还有什么“不起作用”以及如何?你能引用一下DateUtils.round的java文档吗?看起来你很难解释它。我知道如何阅读java文档。第二种解决方案,即
DateUtils.round(现在是15*Calendar.MINUTE),不起作用。事实上,我得到了以下错误:
线程“main”java.lang.IllegalArgumentException中的异常:字段180不受支持
有什么想法吗?