Неверная дата при форматировании с использованием простого формата даты
У меня есть свидание Строка Mon Feb 8 00:00:00 UTC+0530 1954
, Я хочу преобразовать его в формат DD/MM/YYYY
, Выход всегда 08/38/1954 or 09/39/1954
,
Я использовал следующий код.
SimpleDateFormat format = new SimpleDateFormat("MM/DD/YYYY", Locale.US);
System.out.println(format.format(new Date(dateStr)));
4 ответа
Решение
D
в SimpleDateformat
обозначает day in year
в то время как d
обозначает day in month
так замени DD
с dd
,
подобная замена YYYY
с yyyy
DD
в SimpleDateFormat
для "День в году", вы хотите "День в месяце", который dd
,
Также будьте осторожны, что YYYY
для "Неделя года", которая в зависимости от календаря возвращается к "Году", который представлен как yyyy
, Я полагаю, вы хотите yyyy
в любом случае.
Попробуй это:
SimpleDateFormat frmt = new SimpleDateFormat("E MMM d HH:mm:ss zZ yyyy", Locale.US);
Date dateStr = frmt.parse("Mon Feb 8 00:00:00 UTC+0530 1954");
Вам необходимо использовать метод parse() для перехода от даты String к определенному SimpleDateFormat.
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy", Locale.US);
Date date = format.parse(dateStr);
System.out.println(format.format(date));