Skip to content

Commit d0cfbc5

Browse files
author
Bytekeeper
committed
Round to "second" precision to avoid strange "1 second is missing" issues.
1 parent 121d873 commit d0cfbc5

File tree

5 files changed

+19
-8
lines changed

5 files changed

+19
-8
lines changed

src/main/java/org/stt/model/TimeTrackingItem.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.stt.model;
22

3+
import org.stt.time.DateTimes;
4+
35
import java.time.LocalDateTime;
46
import java.util.Optional;
57

@@ -20,8 +22,8 @@ public final class TimeTrackingItem {
2022
public TimeTrackingItem(String activity, LocalDateTime start, LocalDateTime end) {
2123
this.activity = requireNonNull(activity);
2224
this.start = requireNonNull(start, "start must not be null");
23-
this.end = Optional.of(end.withNano(0));
24-
requireThat(!end.isBefore(start.withNano(0)),
25+
this.end = Optional.of(DateTimes.preciseToSecond(end));
26+
requireThat(!end.isBefore(DateTimes.preciseToSecond(start)),
2527
"end must not be before start for item " + this.toString());
2628
}
2729

@@ -31,7 +33,7 @@ public TimeTrackingItem(String activity, LocalDateTime start, LocalDateTime end)
3133
*/
3234
public TimeTrackingItem(String activity, LocalDateTime start) {
3335
this.activity = requireNonNull(activity);
34-
this.start = requireNonNull(start).withNano(0);
36+
this.start = DateTimes.preciseToSecond(requireNonNull(start));
3537
this.end = Optional.empty();
3638
}
3739

src/main/java/org/stt/query/WorkTimeQueries.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.stt.reporting.WorkingtimeItemProvider;
44
import org.stt.text.ItemCategorizer;
5+
import org.stt.time.DateTimes;
56
import org.stt.time.Interval;
67

78
import javax.inject.Inject;
@@ -27,14 +28,14 @@ public WorkTimeQueries(WorkingtimeItemProvider workingtimeItemProvider, ItemCate
2728
}
2829

2930
public Duration queryRemainingWorktimeToday() {
30-
LocalDateTime now = LocalDateTime.now();
31+
LocalDateTime now = DateTimes.preciseToSecond(LocalDateTime.now());
3132
LocalDate today = now.toLocalDate();
3233
Duration workedTime = queryWorktime(Interval.ofDay(today).withEnd(now));
3334
return workingtimeItemProvider.getWorkingTimeFor(today).getMin().minus(workedTime);
3435
}
3536

3637
public Duration queryWeekWorktime() {
37-
LocalDateTime now = LocalDateTime.now();
38+
LocalDateTime now = DateTimes.preciseToSecond(LocalDateTime.now());
3839
LocalDate monday = now.toLocalDate().with(DayOfWeek.MONDAY);
3940
Interval currentWeek = Interval.between(monday.atStartOfDay(), now);
4041
return queryWorktime(currentWeek);

src/main/java/org/stt/time/DateTimes.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,8 @@ public static String prettyPrintDuration(Duration duration) {
8686
return " " + FORMATTER_PERIOD_HHh_MMm_SSs.print(duration);
8787
}
8888
}
89+
90+
public static LocalDateTime preciseToSecond(LocalDateTime localDateTime) {
91+
return localDateTime.withNano(0);
92+
}
8993
}

src/test/java/org/stt/fun/HoursTrackedAchievementTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
import org.junit.Before;
1010
import org.junit.Test;
1111
import org.stt.model.TimeTrackingItem;
12+
import org.stt.time.DateTimes;
1213

1314
import java.time.LocalDateTime;
1415

16+
import static java.time.LocalDateTime.now;
1517
import static org.hamcrest.CoreMatchers.is;
1618

1719
/**
@@ -21,7 +23,7 @@
2123
public class HoursTrackedAchievementTest extends AchievementTestBase {
2224

2325
private HoursTrackedAchievement sut;
24-
private LocalDateTime base = LocalDateTime.now().withNano(0);
26+
private LocalDateTime base = DateTimes.preciseToSecond(now());
2527

2628
@Before
2729
public void setup() {

src/test/java/org/stt/model/TimeTrackingItemTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package org.stt.model;
22

33
import org.junit.Test;
4+
import org.stt.time.DateTimes;
45

56
import java.time.LocalDateTime;
67
import java.util.Optional;
78

9+
import static java.time.LocalDateTime.now;
810
import static org.hamcrest.CoreMatchers.*;
911
import static org.junit.Assert.assertThat;
1012

@@ -50,7 +52,7 @@ public void withEndShouldCreateNewItem() {
5052
TimeTrackingItem sut = new TimeTrackingItem("", LocalDateTime.now());
5153

5254
// WHEN
53-
LocalDateTime newEndTime = LocalDateTime.now().plusMinutes(2).withNano(0);
55+
LocalDateTime newEndTime = DateTimes.preciseToSecond(now().plusMinutes(2));
5456
TimeTrackingItem newItem = sut.withEnd(newEndTime);
5557

5658
// THEN
@@ -65,7 +67,7 @@ public void withStartShouldCreateNewItem() {
6567
TimeTrackingItem sut = new TimeTrackingItem("", LocalDateTime.now());
6668

6769
// WHEN
68-
LocalDateTime newStartTime = LocalDateTime.now().plusMinutes(2).withNano(0);
70+
LocalDateTime newStartTime = DateTimes.preciseToSecond(now().plusMinutes(2));
6971
TimeTrackingItem newItem = sut.withStart(newStartTime);
7072

7173
// THEN

0 commit comments

Comments
 (0)