Но он выводит 02011-00-1 вместо желаемого 2011-01-18. Что я делаю не так?
Переведено автоматически
Ответ 1
Используйте LocalDateTime#parse() (или ZonedDateTime#parse(), если строка случайно содержит часть часового пояса) для разбора String по определенному шаблону в LocalDateTime.
Обновление: согласно вашей неудачной попытке, которую вы добавили в вопрос после публикации этого ответа; шаблоны чувствительны к регистру. Внимательно прочитайте java.text.SimpleDateFormat javadoc, что обозначают отдельные части. Например, так обозначаются M месяцы и m минуты. Кроме того, годы состоят из четырех цифр yyyy, а не из пяти yyyyy. Посмотрите поближе на фрагменты кода, которые я разместил здесь выше.
Ответ 2
Форматирование ЧУВСТВИТЕЛЬНО К РЕГИСТРУ, поэтому ИСПОЛЬЗУЙТЕ MM для месяца, а не mm (это для минуты) и гггг Для справки вы можете использовать следующую таблицу.
G Era designator Text AD y Year Year 1996; 96 Y Week year Year 2009; 09 M Month in year Month July; Jul; 07 w Week in year Number 27 W Week in month Number 2 D Day in year Number 189 d Day in month Number 10 F Day of week in month Number 2 E Day name in week Text Tuesday; Tue u Day number of week(1 = Monday, ..., 7 = Sunday) Number 1 a Am/pm marker Text PM H Hour in day(0-23) Number 0 k Hour in day(1-24) Number 24 K Hour in am/pm (0-11) Number 0 h Hour in am/pm (1-12) Number 12 m Minute in hour Number 30 s Second in minute Number 55 S Millisecond Number 978 z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 Z Time zone RFC 822 time zone -0800 X Time zone ISO 8601 time zone -08; -0800; -08:00
Примеры:
"yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT "EEE, MMM d, ''yy" Wed, Jul 4, '01 "h:mm a" 12:08 PM "hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time "K:mm a, z"0:08 PM, PDT "yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04 AD 12:08 PM "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 200112:08:56 -0700 "yyMMddHHmmssZ" 010704120856-0700 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"2001-07-04T12:08:56.235-0700 "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"2001-07-04T12:08:56.235-07:00 "YYYY-'W'ww-u"2001-W27-3
Ответ 3
Ответ, конечно, заключается в создании объекта SimpleDateFormat и использовании его для разбора строк на даты и форматирования дат в строки. Если вы пробовали SimpleDateFormat и это не сработало, то, пожалуйста, покажите свой код и любые ошибки, которые вы можете получить.
Дополнение: "мм" в строке формата не совпадает с "ММ". Используйте ММ для месяцев и мм для минут. Также, гггг - это не то же самое, что гггг. например,: