У меня есть объект Timestamp в который записано значение
<DateTimeCalc>2019-03-18T03:00:00+03:00</DateTimeCalc>
Как сделать так, чтобы понять, что по GMT пришло пустое время 00:00:00 GMT, то есть без смещения чтобы обработать этот случай?
public boolean isManualCalc(Timestamp timestamp) {
return timestamp.getHours() == 0 && timestamp.getMinutes() == 0 && timestamp.getSeconds() == 0;
}
Но, этот код не учитывает смещения. Как извлечь из timestamp смещение чтобы timestamp.getHours() - сдвиг вернули ноль?
Потенциаально мне могу присылать значения
<DateTimeCalc>2019-03-18T02:00:00+02:00</DateTimeCalc>
<DateTimeCalc>2019-03-18T05:00:00+05:00</DateTimeCalc>
и так далее
Вот так попробуйте:
Timestamp aa=new Timestamp(); aa.getDate().getTimezoneOffset()
Взято из: https://docs.oracle.com/javase/7/docs/api/java/sql/Timestamp.html Methods inherited from class java.util.Date
Вообще Timestamp не содержит временного сдвига!
Но если вам приходит строка с временным сдвигом, то вот что можно сделать:
ZonedDateTime zdt = ZonedDateTime.parse("2019-03-18T03:00:00+03:00");
// Дата и время с учетом зоны GMT
LocalDateTime gmt = LocalDateTime.ofInstant(zdt.toInstant(), ZoneId.of("GMT"));
А дальше смотрите на часы, минуты, секунды итд...
Если все же хотите использовать ваш метод с параметром Timestamp:
ZonedDateTime zdt = ZonedDateTime.parse("2019-03-18T03:00:00+03:00");
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
Timestamp timestamp = Timestamp.from(zdt.toInstant());
System.out.println("isManualCalc(timestamp) = " + isManualCalc(timestamp));
Продвижение своими сайтами как стратегия роста и независимости