Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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 - Fatal编程技术网

如何在java中循环一毫秒?

如何在java中循环一毫秒?,java,Java,Java代码 public static long round(long millis , TimeUnit unit){ Calendar calendar = Calendar.getInstance(); switch(unit){ case DAYS: calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND,0);

Java代码

public static long round(long millis , TimeUnit unit){
    Calendar calendar = Calendar.getInstance();
    switch(unit){
        case DAYS:
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND,0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.HOUR, 0);
            return calendar.getTimeInMillis();
        case HOURS:
            calendar.set(Calendar.MILLISECOND, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            return calendar.getTimeInMillis();
        case MINUTES:
            calendar.set(Calendar.MILLISECOND , 0);
            calendar.set(Calendar.SECOND, 0);
            return calendar.getTimeInMillis();
        case SECONDS:
            calendar.set(Calendar.MILLISECOND, 0);
            return calendar.getTimeInMillis();
        case MILLISECONDS:
        default:
            calendar.set(Calendar.MILLISECOND, 0);
            return  calendar.getTimeInMillis();
    }
}
目前,我正在使用此代码对毫秒值进行四舍五入。在这种方法中,代码的冗余是一个大问题


有没有更好的解决方案或数学公式来计算这一点?

您可以通过如下方式利用下降法消除所有重复行:

public static long round(long millis , TimeUnit unit){
    Calendar calendar = Calendar.getInstance();
    switch(unit){
        case DAYS:
            calendar.set(Calendar.HOUR, 0);
        case HOURS:
            calendar.set(Calendar.MINUTE, 0);
        case MINUTES:
            calendar.set(Calendar.SECOND, 0);
        case SECONDS:
        case MILLISECONDS:
        default:
            calendar.set(Calendar.MILLISECOND, 0);
    }
    return calendar.getTimeInMillis();
}
注意
开关中没有
break
return
语句。这会导致
开关
块中的语句转到下一个
案例
标签


这在中有介绍。

不仅仅是
日历。设置(Calendar.millis秒,0)
就足够了吗

另一种方法是:

return date.getTime() / 1000 * 1000;

您可以利用switch语句中的“fallthrough”:

public static long round(long millis , TimeUnit unit){
    Calendar calendar = Calendar.getInstance();
    switch(unit){
        case DAYS:
            calendar.set(Calendar.HOUR, 0);
        case HOURS:
            calendar.set(Calendar.MINUTE, 0);
        case MINUTES:
            calendar.set(Calendar.SECOND, 0);
        case SECONDS:
            calendar.set(Calendar.MILLISECOND, 0);
    }
    return  calendar.getTimeInMillis();

}
public static long round(long millis , TimeUnit unit){
    Calendar calendar = Calendar.getInstance();
    switch(unit){
        case DAYS:
            calendar.set(Calendar.HOUR, 0);
        case HOURS:
            calendar.set(Calendar.MINUTE, 0);
        case MINUTES:
            calendar.set(Calendar.SECOND, 0);
        case SECONDS:
            calendar.set(Calendar.MILLISECOND, 0);
    }
    return  calendar.getTimeInMillis();

}