SimpleDateFormat игнорирует месяц при синтаксическом анализе
Следующий код выдает мне проанализированную дату как "Ср. 13 янв. 00: 00: 00 EST 2010" вместо "Ср. 13 июн. 00: 00: 00 EST 2010". Любые идеи приветствуются.
MM означает месяц. mm означает минуты. Смотрите документацию для SimpleDateFormat для получения более подробной информации о поддерживаемых шаблонах даты и времени.
Ответ 2
Проблема в том, что вы используете 'mm' в качестве месяца, а 'mm' представляет минуты. Ниже приведены все доступные форматы дат, подробнее с документом можно ознакомиться здесь.
Symbol Meaning Kind Example D day in year Number 189 E day of week Text E/EE/EEE:Tue, EEEE:Tuesday, EEEEE:T F day of week in month Number 2 (2nd Wed in July) G era designator Text AD H hour in day(0-23) Number 0 K hour in am/pm (0-11) Number 0 L stand-alone month Text L:1 LL:01 LLL:Jan LLLL:January LLLLL:J M month in year Text M:1 MM:01 MMM:Jan MMMM:January MMMMM:J S fractional seconds Number 978 W week in month Number 2 Z time zone(RFC 822) Time Zone Z/ZZ/ZZZ:-0800 ZZZZ:GMT-08:00 ZZZZZ:-08:00 a am/pm marker Text PM c stand-alone day of week Text c/cc/ccc:Tue, cccc:Tuesday, ccccc:T d day in month Number 10 h hour in am/pm (1-12) Number 12 k hour in day(1-24) Number 24 m minute in hour Number 30 s second in minute Number 55 w week in year Number 27 G era designator Text AD y year Number yy:10 y/yyy/yyyy:2010 z time zone Time Zone z/zz/zzz:PST zzzz:Pacific Standard
Я использую и рекомендую java.time современный Java date and time API. Нам даже не нужен явный форматировщик для синтаксического анализа. Это потому, что ваша строка находится в формате ISO 8601, международном стандарте, который java.time классы анализируют по умолчанию. java.time вышел в 2014 году.
Хотя в 2010 году, когда был задан этот вопрос, SimpleDateFormat это было то, что у нас было для синтаксического анализа дат и времени, сейчас этот класс, к счастью, считается давно устаревшим, потому что он также доставлял хлопоты.
In case your string contained only a date without time of day, use the LocalDate class in quite the same manner (this was asked in a duplicate question).
SimpleDateFormat sdf= newSimpleDateFormat("dd MM yyyy");
you can use comma, full-stop, slash, or hyphen between these format.
Ex: dd-mm-yyyy, it will display like(06-07-2016) dd/mm/yyyy,it will display like(06/07/2016) dd.mm.yyyy,it will display like(06.07.2016) dd,mm,yyyy ,it will display like(06,07,2016)
MM - will display number of the Month. MMM - will display Month Three character only(Ex: Jul) MMMM - will display full month(Ex: July)
yyyy - will display full year(2016) yy - will display last two digits(16)
hh - will display hours mm -will display minutes ss - will display seconds a - will display AM or PM
Ex: if time is 12:09:10 PM means(hh:mm:ss a)
EEE- will display short week name(Ex: Wed) EEEE- will display full week name(Ex: Wednesday)