首页 > 解决方案 > 传递 TimeUnits 并转换为毫秒

问题描述

如何为用户传递TimeUnit例如分钟、秒、小时和数字的类创建 API,并在类内部保留毫秒值。
以下似乎是唯一的方法?

void someMethodDays(int numOfDays) {  
   this.longValue = TimeUnit.DAYS.toMillis(numOfDays);  
}  

void someMethodHour(int numOfHours) {  
   this.longValue = TimeUnit.HOURS.toMillis(numOfDays);  
} etc  

这是唯一的方法吗?每个值的方法具有参数的描述性名称?

标签: javaoopdesign-patternstimeunit

解决方案


java.time.LocalDate您可以在提供plus(long, TemporalUnit)方法的知名且经过测试的类之后为您的类建模:

同样,您可以创建一个someMethod(long, TimeUnit)方法,允许调用者传入任意数量的 any TimeUnit

void someMethod(long amount, TimeUnit unit) {
    this.longValue = unit.toMillis(amount);
}

请注意,LocalDate 它还提供了用于添加某些常见时间单位的专用方法,例如plusDays(). 这使调用者能够决定哪个对他们正在编写的代码更清晰:

LocalDate tomorrow = today.plusDays(1);
LocalDate tomorrow = today.plus(1, TimeUnit.DAYS);

推荐阅读