ath*_*r99 3 java time duration date hour
假设以下代码段:
LocalTime test = LocalTime.of(21, 14);
test.plusHours(5);
Run Code Online (Sandbox Code Playgroud)
结果通常是,02:14
但我希望超过24小时限制,所以结果将是26:14
.
在这种情况下,我有一个字段,用户可以输入在任务上花费的时间.但是我必须工作几小时(例如48小时)而不是几天(例如2天和4小时).
有没有办法在java.time
API中实现这一目标?如果没有,我该怎么做才能实现这一目标?我正在使用Java 8,使用Spring Boot和Hibernate来映射数据库.
要指定任务所需的时间,请使用持续时间:
Duration initialDuration = Duration.ofHours(21).plusMinutes(34);
Duration afterFurtherWork = initialDuration.plusHours(5);
System.out.printf("Total duration was %2d hours and %02d minutes.%n",
afterFurtherWork.toHours(), afterFurtherWork.toMinutesPart());
Run Code Online (Sandbox Code Playgroud)
更新:正如Ole VV指出的那样,toMinutesPart
在Java 9中添加了.如果仍然使用Java 8,请使用toMinutes()%60
.
java.time.Duration
您正在使用wront数据类型作为值.你需要一个Duration
.Duration
是时间级别的对应物Period
:
基于时间的时间量,例如'34.5秒'.
Duration durationTaken = Duration.of(5, ChronoUnit.HOURS);
Run Code Online (Sandbox Code Playgroud)
如果要将其与日期概念相关联,例如计算结束时间,则可以将plus
持续时间设置为日期/时间类型:
LocalTime endTime = test.plus(durationTaken); //02:14
Run Code Online (Sandbox Code Playgroud)
你也可以这样做LocalDateTime
:
LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), test); //2019-02-07T21:14
//add the duration:
LocalDateTime endDate = startTime.plus(durationTaken); //2019-02-08T02:14
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
288 次 |
最近记录: |