web-dev-qa-db-ja.com

Androidの日付/時刻オブジェクトへのISO 8601文字列

標準の ISO 8601 形式の文字列があり、次のようなWebサービスから返された日付/時刻が含まれています。

String dtStart = "2010-10-15T09:27:37Z"

これを時刻や日付などのオブジェクトに取得するにはどうすればよいですか?最初は別の形式で出力したいのですが、後で他のことをする必要があります(つまり、別の形式で使用する可能性があります)。

乾杯

46
neildeadman
String dtStart = "2010-10-15T09:27:37Z";  
SimpleDateFormat  format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = format.parse(dtStart);  
    System.out.println(date);  
} catch (ParseException e) {  
    // TODO Auto-generated catch block  
    e.printStackTrace();  
}

これはあなたが探しているものです。この問題について 既存の投稿 があります。

117
Seitaridis

この質問は2010年に行われたものであり、当時はSimpleDateFormatまたはJoda-Timeが使用すべきツールであることが正しかった。かなり前になりました。今日の使用

    Instant iStart = Instant.parse(dtStart);

はい、これは簡単です。文字列はISO 8601形式で、Java.timeのクラス、現代のJava日付と時刻API、明示的なフォーマッタなしでISO 8601を解析します。Instantはこれらのクラスの1つです。

質問:AndroidでJava.timeを使用できますか?

はい、Java.timeは古いものと新しいものでうまく動作しますAndroidデバイス。少なくともJava6

  • Java 8以降、およびより新しいAndroidデバイス(APIレベル26から、私が言った))には最新のAPIが組み込まれています。
  • Java 6および7は、新しいクラスのバックポートであるThreeTenバックポートを取得します(JSR 310用のThreeTen。下部のリンクを参照)。
  • オン(古い)Android ThreeTenバックポートのAndroidエディションを使用します。ThreeTenABPと呼ばれます。そして、サブパッケージでorg.threeten.bpから日時クラスをインポートしてください。

リンク集

6
Ole V.V.

JavaのSimpleDateFormat解析メソッド を使用するか、 JodaTimeのDateTimeFormat を使用してDateTimeFormatterを作成し、 DateTimeオブジェクトに解析 を適宜使用できます。

2