2015-02-20 3 views
0

У меня возникла какая-то странная проблема. У меня есть дата в строке в формате «dd-MMM-yyyy hh: mm: ss a» после разбора строки в дату, она увеличивается на один день.После парсинга Дата увеличивается на один день в java

код

public static void main(String[] args) throws ParseException { 
    String s = "09-Mar-2015 17:05:04 PM"; 
    System.out.println("before parsing " + s); 
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss a"); 
    Date d = sdf.parse(s); 
    System.out.println("date " + d); 
    String format = sdf.format(d); 
    System.out.println("after format " + format); 

} 

о/р

before parsing 09-Mar-2015 17:05:04 PM 
date Tue Mar 10 05:05:04 IST 2015 
after format 10-Mar-2015 05:05:04 AM 
+0

17:05:04 является 24-часовой формат. Итак, почему в строке есть информация AM/PM? Выглядит для меня, как эта дата не обрабатывается. – dehlen

ответ

1

Удалить "а" в этой строке.

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss a"); 

.

public static void main(String[] args) throws ParseException { 
    String s = "09-Mar-2015 17:05:04 PM"; 
    System.out.println("before parsing " + s); 
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss"); 
    Date d = sdf.parse(s); 
    System.out.println("date " + d); 
    String format = sdf.format(d); 
    System.out.println("after format " + format); 

} 

Выход

before parsing 09-Mar-2015 17:05:04 PM 
date Mon Mar 09 17:05:04 GMT 2015 
after format 09-Mar-2015 05:05:04 
+0

thanks.It работает как шарм – sar

+0

Без проблем, рад помочь! –

-1

Проблема заключается в том, что вы разбор строки даты без указания часового пояса. Когда вы разбираете дату, он выбирает IST (стандартное время Индии) в качестве часового пояса.

Значит, это не только то, что на следующий день, но через 12 часов, в вашем примере это примерно 5 утра.

Я думаю, что если вы укажете символ формата «z» и включите часовой пояс в исходной строке, у вас не будет этой проблемы.

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss z"); 

Чтобы точно прибить эту проблему нам нужна информация о часовом поясе ваша машина находится.

+0

Нет, этот вопрос не о часовых поясах для перемен. – Kenster

Смежные вопросы