Я пытаюсь добавить/преобразовать время в формате 24 часа (20:20)
с "01/01/1900"
. Я использую базу данных sybase
. Мне нужно сохранить его в базе данных sybase (поле datetime), например, "01/01/1900 20:20:00"
. 24 hour time format
вводится пользователем. Я хотел бы добавить его к этой дате "01/01/1900"
. При извлечении из базы данных я также хотел бы преобразовать поле времени даты в поле времени в 24 hour format
Должен ли я использовать григорианский календарь/должен преобразовать строку в формат времени даты. Как я могу это достичь. Поиск предложенийДобавить формат 24-часового времени с форматом даты Sybase
ответ
Используйте объекты, не струнные
работу вашего драйвера JDBC является перевод между объектами Java и собственный формат данных базы данных.
На стороне Java избегайте неприятных старых классов времени, таких как java.util.Date
и Calendar
. Теперь они устарели, вытесняются классами java.time.
Класс LocalTime
предназначен для значения времени суток без даты и без часового пояса.
Ваша входная строка соответствует стандартным форматам ISO 8601. По умолчанию классы java.time используют эти стандартные форматы. Поэтому нет необходимости указывать формат разбора.
LocalTime lt = LocalTime.parse("20:21");
Аналогичным образом, LocalDate
для формата даты.
Для получения текущей даты требуется часовой пояс.
ZoneId z = ZoneId.of("America/Montreal");
LocalDate ld = LocalDate.now(z);
В случае возникновения этого вопроса мы хотим получить твердую дату.
LocalDate ld = LocalDate.of(1900 , Month.JANUARY , 1);
Поместите эти кусочки вместе и назначьте их предполагаемый часовой пояс.
ZonedDateTime zdt = ZonedDateTime.of(ld , lt , z);
zdt.toString(): 016-12-17T20: 21-05: 00 [Америка/Монреаль]
Пройдите в свою базу данных через JDBC через PreparedStatement::setObject
.
myPS.setObject(… , zdt);
Если ваш драйвер не поддерживает JDBC 4.2, падают обратно, используя старые java.sql типы с драйвером. Посмотрите на новые методы, добавленные в старые классы для преобразования.
java.sql.Timestamp ts = java.sql.Timestamp.from(zdt.toInstant());
myPS.setTimestamp(… , ts);
Эти вопросы были рассмотрены во многих других Вопросах и Ответы. Поиск переполнения стека для более широкого обсуждения и других примеров.
В Javascript или на Java? Вы ошибочно отметили его обоих. –
Java, извините за ошибку. – Praveen
@EngineerDollery Я прошу о предложениях :) Спасибо, что комментировали! – Praveen