У меня проблема с получением секунд из двух объектов LocalDateTime.
// a timestammp for the time when the connection was established
public LocalDateTime establish() {
startTime = LocalDateTime.now();
connectionEstablished = true;
return startTime;
}
// timestamp for the time when the connection was disconnected
public LocalDateTime disconnect() {
endTime = LocalDateTime.now();
connectionDisconnected = true;
return endTime;
}
// get the second when the connection was established
public LocalDateTime getStartTime() {
}
// get the seconds when the connection was disconnected
public LocalDateTime getEndTime() {
}
В методе getStartTime () и getEndTime тип возвращаемого значения должен быть из LocalDateTime. Я пробовал разные вещи, например, используя Duration.between, используя Temporal в качестве возвращаемого типа, но он не работает, потому что тест Junit выдает ошибку, что тип возвращаемого значения должен быть LocalDateTime.
Вот тест Junit:
@Test
void test() throws InterruptedException {
cdr.establish();
System.out.println(cdr.toString());
assertTrue(cdr.toString().matches("calling: \\+44 44\\/725 8912, called: \\+1 982\\/543 1201, start: " + TIMESTAMP_PATTERN + ", end: still established"));
assertEquals(0.0, Duration.between(cdr.getStartTime(), LocalDateTime.now()).getSeconds(), 0.1);
assertNull(cdr.getEndTime());
Thread.sleep(1000);
cdr.establish();
// it fails here
assertEquals(1.0, Duration.between(cdr.getStartTime(), LocalDateTime.now()).getSeconds(), 0.1);
Thread.sleep(1000);
cdr.disconnect();
System.out.println(cdr.toString());
assertTrue(cdr.toString().matches("calling: \\+44 44\\/725 8912, called: \\+1 982\\/543 1201, start: " + TIMESTAMP_PATTERN + ", end: " + TIMESTAMP_PATTERN));
assertEquals(2.0, Duration.between(cdr.getStartTime(), cdr.getEndTime()).getSeconds(), 0.1);
Thread.sleep(1000);
cdr.disconnect();
assertEquals(2.0, Duration.between(cdr.getStartTime(), cdr.getEndTime()).getSeconds(), 0.1);
}
Любая помощь приветствуется. Спасибо!