2015-01-29 5 views
0

Я использую пакет joda для выполнения некоторых своих работ со временем. Я смущен, почему моя картина не делает правильную работу, чтобы получить правильный день, который должен быть 10. Если я печатаю это показывает: что является getDayOfMonth -> 14Неверный шаблон Joda? Неверный день

public void testTime() { 
     String startDate = "Fri, 10 Jan 2015 23:10:04 +0000"; 
     String pattern = "EEE, dd MMM yyyy HH:mm:ss +xxxx"; 
     DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); 
     DateTime time1 = fmt.parseDateTime(startDate); 
     System.out.println("what is the getDayOfMonth --> " + time1.getDayOfMonth()); 
    } 

Есть проблема с EEE? Что мне нужно сделать, чтобы исправить это?

+1

10 января 2015 года не было пятницы. Вы должны передать правильную дату или проигнорировать день недели в своем шаблоне. –

+0

Вы используете неправильный формат для часового пояса. Вместо '+ xxxx' используйте только' Z' –

ответ

2

Во-первых, вы используете неправильный шаблон для часовой пояс. Используйте Z вместо +xxxx. См. API DateTimeFormat.

Во-вторых, вы также должны указать часовой пояс для своего форматирования, иначе он будет отформатирован в вашем местном часовом поясе. Таким образом, вы можете не получить точно 10, если ваш часовой пояс +5:00. И, конечно же, 10 янв. был субботой, а не пятницей. В целом, следует хорошо работать:

String startDate = "Sat, 10 Jan 2015 23:10:04 +0000"; 
String pattern = "EEE, dd MMM yyyy HH:mm:ss Z"; 
DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern).withZone(DateTimeZone.UTC); 
DateTime time1 = fmt.parseDateTime(startDate); 
System.out.println("what is the getDayOfMonth --> " + time1.getDayOfMonth()); 
+0

Спасибо @dystroy, да, мой день был неправильным – user2763948

+0

Спасибо @Rohit Jain, мне нужно использовать Z. Я сделал исправление, чтобы оно стало: String pattern = "EEE, dd MMM yyyy HH: mm: ss Z "; – user2763948

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