Вы создаете текстовое поле, содержащее yyyy-MM-dd hh:mm:ss
, затем немедленно извлекаете содержимое из него и пытаетесь проанализировать его как дату-время.Вместо этого вам нужно разрешить пользователю вводить дату и время в поле, прежде чем пытаться выполнить синтаксический анализ.
Обычно вам нужно, чтобы пользователь нажимал кнопку OK или подобное, и когда он / она это делает, затем продолжайтес вызовом getText()
для получения введенной даты и времени.
Тем не менее, вы не должны использовать Date
, TimeZone
и SimpleDateFormat
.Эти старые классы имеют проблемы с дизайном, последний, в частности, печально известен своими проблемами, и все они давно устарели.Вместо этого используйте LocalDateTime
, ZoneId
и DateTimeFormatter
из java.time, современного Java-API даты и времени.
Также не используйте трехбуквенное сокращение часового пояса, например EST
.Хотя TimeZone.getTimeZone("EST")
, вероятно, является детерминированным, я не знаю наизусть, даст ли он вам America/New_York
или UTC-05: 00, и другие читатели тоже не будут знать.Чтобы добавить к путанице, EST также может означать Австралийское восточное стандартное время, и могут быть и другие интерпретации.Поэтому используйте America/New_York
, если вы намерены это сделать.
Ссылка: Учебное пособие по Oracle: Дата и время , объясняющее, как использовать java.time
.