如何在java中循环一毫秒?
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);
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();
}