Я разочаровался в понимании ваших методов вне контекста.Я думаю, что вы ищете что-то вроде следующего.
DateTimeFormatter dateFormatter = DateTimeFormatter. ofPattern("MM/dd/yyyy");
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss X");
ZoneOffset offset = ZoneOffset.UTC;
LocalDate fecha = LocalDate.now(offset);
OffsetTime horaIn = OffsetTime.of(15, 0, 0, 0, offset);
OffsetTime horaOut = OffsetTime.of(17, 37, 15, 0, offset);
String strDate = fecha.format(dateFormatter);
System.out.println(strDate);
String strHourIn = horaIn.format(timeFormatter);
System.out.println(strHourIn);
String strHourOut = horaOut.format(timeFormatter);
System.out.println(strHourOut);
Этот код печатает:
05/25/2018
15:00:00 Z
17:37:15 Z
Я использую java.time
, современный Java API даты и времени.SimpleDateFormat
общеизвестно хлопотно, и вместе с Date
и DateFormat
давно устарели.Вместо того, чтобы жестко кодировать букву Z
в формате времени, я предпочел поместить смещение в формат данных I, чтобы оно также давало правильный вывод, если однажды мы решим использовать другое смещение (класс OffsetTime
редкоиспользуется, но здесь кажется правильным).
Если вы получите ваше время как LocalTime
, то есть без смещения, например, из вашей базы данных, конвертируйте так:
OffsetTime hora = localTimeFromDatabase.atOffset(offset);
Ссылка: Обучающая программа Oracle: Дата и время , объясняющая, как использовать java.time
.