tl;dr
ZonedDateTime.now( ZoneId.of( "Asia/Bangkok" ) )
java.время
Устаревшие классы даты и времени, которые вы используете, просто ужасны, имеют недостатки в дизайне и реализации, созданы людьми, которые не понимают обработку даты и времени. Полностью избегайте этих занятий.
Используйте только современные классы java.time, определенные в JSR 310< /а>.
ZoneId z = ZoneId.of( "Asia/Bangkok" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
Генерировать текст в стандартном формате ISO 8601, разумно расширенном, чтобы добавить название часового пояса в квадрате скобки.
String output = zdt.toString() ;
Для других форматов используйте DateTimeFormatter
в сотнях других вопросов и ответов.
См. этот выполнение кода на IdeOne.com.
2020-02-15T12:27:31.118127+07:00[Азия/Бангкок]
О java.time
< Платформа em>java.time встроена в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и SimpleDateFormat
.
Чтобы узнать больше, см. Учебное пособие по Oracle. И поищите множество примеров и пояснений в Stack Overflow. Спецификация: JSR 310.
Проект Joda-Time, теперь в режим обслуживания, советует перейти на java.time.
Вы можете обмениваться объектами java.time непосредственно с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. . Этот проект является испытательным полигоном для возможных дополнений к java.time в будущем. Здесь вы можете найти несколько полезных классов, таких как Interval
a>, YearWeek
, YearQuarter
и подробнее.
person
Basil Bourque
schedule
15.02.2020
GregorianCalendar
иDate
. Эти классы плохо разработаны и давно устарели. И уж тем более пресловутыеDateFormat
/SimpleDateFormat
, предложенные в паре ответов. См. хороший ответ Бэзила Бурка. - person Ole V.V.   schedule 15.02.2020