2011-12-27 20 views
2

Androidでは、すべてのイベント(誕生日や記念日など)の日付は、文字列形式で保存されます。 "2011-12-24"。Androidの日付文字列を日付オブジェクトに変換する

これは少なくとも私の携帯電話の場合です。グレゴリオ暦とは異なるカレンダーを使用している場合、他の携帯電話ではこれらの日付を他の形式で保存している可能性があります。

グレゴリオ暦が設定されている電話機であっても、時間と分を含む日付文字列があります。私はイベントのための連絡先のテーブルを照会するとき、私は、このような日付文字列を取得します:

cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.ST‌​ART_DATE)) 

これは、(例えば)での結果:

「2011-12-14」または「2011-12-24T00: 00:00Z "

さまざまな形式が考えられます。日付を計算するために、それらをStringからDateオブジェクトに変換する必要があります。

どうすればいいですか?

PS:

DateFormat myDateFormat = new SimpleDateFormat("dd/MM/yy"); 
Date tempDate = myDateFormat.parse("24/12/2011"); 

しかし、Androidの中で、私はに直面することがありますどの形式かわからない、私は:私はJavaの日付オブジェクトのための解析機能があります知っていますか?

答えて

3

Androidは日付オブジェクトで動作します。文字列から日付を解析する必要があるときはいつでも、日付がシリアル化されている可能性があります。その場合、使用されていたフォーマットがわかります。日付オブジェクトは環境設定で使用され、日付オブジェクトは共有サービス、アクティビティなどに関連すると思うほとんどの場所で使用されます。これは、日付から文字列を解析する必要はほとんどありません。シリアライズされたソース、Webサービスなどから読み込みます。 あなたのシナリオを教えていただけたら、より具体的な回答が得られるかもしれません。

あなたが現在設定されている日付形式のように得ることができます。素敵で親切な答えのため

DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext()); 
+0

ありがとう!私はイベントの連絡先テーブルを照会しています:cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE)) – caw

+0

...これは私が文字列形式の日付を取得する場所です。 "2011-12-24T00:00:00Z" Dateオブジェクトとして日付を取得するにはどうすればよいですか?メソッド "cursor.getDate()"はありません... – caw

+0

この場合、解析できます。また、この日付書式は言語設定に関係なく同じであるため、安全に想定することができます。 –

0
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

SimpleDateFormat myDateFormat = new SimpleDateFormat("dd/MM/yy"); 
     Date tempDate; 
     try { 
      tempDate = myDateFormat.parse("24/12/2011"); 
       long milliseconds=tempDate.getTime(); 
       Toast.makeText(getApplicationContext(), milliseconds+"", 1).show(); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
関連する問題