2012-04-19 18 views
1

タイムスタンプから時刻を取得しようとすると問題が発生します。SimpleDateFormat時刻のみ取得

タイムスタンプの例である:

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

Iの形式は「YYYY-MM-dd'T'HHだと思います。 SSSZ "そうですか? 「HH:mm」でなければなりません。

私は、次のコードを使用しますが、それは何もありません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に与えられたものを例時間で

正しいです。 00 + 0200" )それが動作するはずです。この

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

を渡してみミリ秒に

が不足しています。

編集:言及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()関数がありますが、廃止予定です。 05:あなたのコードカレンダー

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オブジェクトを使用して、おそらくカレンダースーパークラスのメソッドを使用して、ほとんどの日付/時刻操作を行います。ロケール固有の書式設定を行うには、DateFormatが必要です。しかし、これはDateオブジェクトの書式設定しかできないため、Calendar/GregorianCalendarを最初のものに変換する必要があります。基本的に、SimpleDateFormatは、既に発見したようにカスタム書式設定を行うためのものです。

「DateFormat」という2つの異なるクラスがあります。

関連する問題