Неверная дата при форматировании с использованием простого формата даты

У меня есть свидание Строка 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));
Другие вопросы по тегам