tl;dr
LocalDateTime.parse(
"May 23 2011 12:20:00" ,
DateTimeFormatter.ofPattern( "MMM d uuuu HH:mm:ss" , Locale.US )
)
Использование java.time
Правильный принятый ответ Андреаса Крюгера. Вы должны указать Locale
, чтобы определить человеческий язык, используемый при переводе названия месяца. Лучше всего взять за привычку всегда указывать локаль при работе с датой и временем.
Современный подход избегает неприятных старых классов даты и времени, вместо этого используя их замены, классы java.time.
String input = "May 23 2011 12:20:00" ;
Определите шаблон форматирования для соответствия вводу с помощью DateTimeFormatter
класс.
Locale
определяет (а) язык для перевода названия дня, названия месяца и т. д. и (б) культурные нормы, решающие вопросы аббревиатуры, использования заглавных букв, пунктуации, разделителей и т. д.
Locale locale = Locale.US ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM d uuuu HH:mm:ss" , locale );
В вашем вводе отсутствуют какие-либо указания на часовой пояс или смещение от UTC. Итак, мы анализируем как LocalDateTime
.
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
ldt.toString(): 2011-05-23T12:20:00
О java.time
Платформа java.time встроен в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и SimpleDateFormat
.
Проект Joda-Time, теперь в режим обслуживания, советует перейти на java.time.
Чтобы узнать больше, см. учебник по Oracle. И поищите множество примеров и пояснений в Stack Overflow. Спецификация: JSR 310.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. . Этот проект является испытательным полигоном для возможных дополнений к java.time в будущем. Здесь вы можете найти несколько полезных классов, таких как Interval
a>, YearWeek
, YearQuarter
и подробнее.
person
Basil Bourque
schedule
11.05.2017
System.out.println((new SimpleDateFormat("MMM dd yyyy HH:mm:ss")).parse("May 23 2011 12:20:00"));
печатаетMon May 23 12:20:00 IST 2011
- person Harry Joy   schedule 26.05.2011