2012-04-19 4 views
1

У меня проблема, когда я пытаюсь получить только время с отметки времени.SimpleDateFormat получает только время

Пример Timestamp является:

2012-04-19T23: 05: 00 + 0200

Я думаю, что формат «ГГГГ-ММ-dd'T'HH: мм: сс. SSSZ "правильно? И это должно быть «ЧЧ: мм».

Я использую следующий код, но он не returnes ничего:

public String getTime(String Vertrektijd){ 
     final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
     Date dateObj; 
     String newDateStr = null; 
     try 
     { 
      dateObj = df.parse(Vertrektijd); 
      SimpleDateFormat fd = new SimpleDateFormat("HH:mm"); 
      newDateStr = fd.format(dateObj); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return newDateStr; 
    } 

Спасибо за помощь!

ответ

3

Ваш код правильный ...

В примерном времени, что вы дали в этом вопросе (то есть, «2012-04-19T23: 05: 00 + 0200") отсутствует миллисекунды

Постарайся проходя этот

getTime("2012-04-19T23:05:00.235+0200"); 

Он должен работать.

Edit: Как MH упоминалось, если вы не хотите использовать миллисекунды вы можете изменить код

final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); 
+0

@Jelmer Visser: Или, наоборот, измените форматтер на 'yyyy-MM-dd'T'HH: mm: ssZ', чтобы использовать пример, который вы указали. Обратите внимание, как последняя часть отличается, так как вы действительно перепутали * миллисекунду * часть. –

+1

Thansk много, он работает сейчас! –

0

Дата имеет функцию getHours() и getMinutes(), но она устарела. Надлежащим образом будет использовать календарь Основной

Calendar calendar = Calendar.getInstance(); 
calendar.setTime(dateObj); 
int hours = calendar.get(Calendar.HOUR_OF_DAY); 
int minutes = calendar.get(Calendar.MINUTE); 
0

Here попытка обобщить все запутанные классы Java и Android обеспечивают делать с даты, время и время. В основном, вы делаете большую часть своих действий с датой/временем, используя объекты GregorianCalendar, возможно, используя методы из суперкласса Calendar. Чтобы выполнить форматирование, специфичное для локали, вам понадобится DateFormat. Но это может только форматировать объекты Date, поэтому вам нужно преобразовать свой календарь/GregorianCalendar в один из них. В принципе, SimpleDateFormat предназначен для выполнения пользовательского форматирования, как вы уже обнаружили.

Обратите внимание, что существуют два разных класса, называемых «DateFormat».

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