#simpledateformat
#simpledateformat
Вопрос:
Я действительно смущен объектом SimpleDateFormat. Вот код :
SimpleDateFormat formatter = new SimpleDateFormat("DDHHmm MMM yy", Locale.ENGLISH);
String dateString = "312230 MAR 10";
try
{
Date date = (Date)formatter.parse(dateString);
System.out.println("Original string: " dateString);
System.out.println("Parsed date : " date.toString());
}
catch (ParseException e)
{
System.out.println("ERROR: could not parse date in string ""
dateString """);
}
и это вывод :
Original string: 312230 MAR 10
Parsed date : Sun Jan 31 22:30:00 EST 2010
Я действительно ожидал, что результат будет
Parsed date : Wed Mar 31 22:30:00 EST 2010
Может кто-нибудь, пожалуйста, указать, что я делаю неправильно? Это было бы глубоко оценено. Я использую java 1.6_27.
Ответ №1:
Измените шаблон SimpleDateFormat на «ddHHmm MMM yy», возвращающий ожидаемый результат
Original string: 312230 MAR 10
Parsed date : Wed Mar 31 22:30:00 CEST 2010
DD в верхнем регистре означает день года. В вашем примере день 31 приходится на январь, как ваш вывод, а не на март
Комментарии:
1. Я знал, что это должно быть что-то глупое. Большое вам спасибо за ответ.
Ответ №2:
В SimpleDateFormat :
D представляет день в году.Например,- 31 в качестве значения DD даст вам 31-й день с 1-го Jan.So , 31-й день года, начинающийся с 1 января, будет 31 января.
d представляет день в месяце.Например, если в качестве значения dd задано значение 31, а MMM равно MAR, то это будет 31 мая.
Подробнее в SimpleDateFormat.