20831


String型からDate型の変換は、基本は次のように出来ることはわかります

[code]

    String dateStr = "20140101 00:00:00";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
    Date formatDate = sdf.parse(dateStr);
    
[/code]

これは、Date型に変えたい文字列の型が１つに定まっているからできる事だと思います。  
取得するStringの日付形式が複数ある場合にはどのように処理するのでしょうか？

これが数種類であると確定しているなら、その種類に併せて分岐させればよいと思います。  
が、複数ある場合に日付フォーマットとして一般的なものであれば、放り込めばDate型に変換してくれる関数のようなものはないのでしょうか？

例えば以下のような日付をString型で取得します。

[code]

    2016-01-08T15:35:42Z
    2016-01-03T13:18:06.483+09:00
    Sat, 31 Oct 2015 13:33:51 +0000
    
[/code]


CC BY-SA 3.0
2016-01-10T10:07:24.130
20800
2016-01-20T10:42:36.937
2016-01-10T12:04:11.003
7290
13945
question
android java
複数のString型からDate型への変換


org.apache.commons.lang3.time.DateUtilsのparseDate()メソッドで可能です。

[code]

    final String[] PATTERN = {"yyyy-MM-dd'T'HH:mm:ss'Z'",
                        "yyyy-MM-dd'T'HH:mm:SSSZ",
                        "EEE, dd MMM yyyy HH:mm:ss Z"};
    String data1 = "2016-01-08T15:35:42Z";
    String data2 = "2016-01-03T13:18:06.483+09:00";
    String data3 = "Sat, 31 Oct 2015 13:33:51 +0000";
    
    System.out.println(DateUtils.parseDate(date1, PATTERN));
    System.out.println(DateUtils.parseDate(date2, PATTERN));
    System.out.println(DateUtils.parseDate(date3, PATTERN));
    
[/code]

Date関連のライブラリなんか使えばほかにも方法があると思いますが、  
おそらく一番使われているのではないでしょうか。  
ちなみに、英語の月名の変換は、それぞれのUtilityで変換できるもの、できないものがあるのに注意してください。


CC BY-SA 3.0
2016-01-11T11:06:05.187
20831
2016-01-11T11:06:05.187
8396
20800
answer


omarun
さんの[回答](https://ja.stackoverflow.com/a/20831/4959)は汎用性があると思いますが、外部ライブラリであるApache
Commonsに依存しないAndroid SDKオンリーの実装として以下が使えます：

[code]

    final String[] formatStrings = {"yyyy-MM-dd'T'HH:mm:ss'Z'",
                              "yyyy-MM-dd'T'HH:mm:SSSZ",
                              "EEE, dd MMM yyyy HH:mm:ss Z"}
    
    Date tryParse(String dateString) {
        for (String formatString : formatStrings) {
            try {
                return new SimpleDateFormat(formatString).parse(dateString);
            }
            catch (ParseException ignore) {}
        }
        return null;
    }
    
[/code]

出典: [How to parse dates in multiple formats using
SimpleDateFormat](https://stackoverflow.com/a/4024604/328640)


CC BY-SA 3.0
2016-01-20T10:42:36.937
21126
2016-01-20T10:42:36.937
2017-05-23T12:38:56.083
-1
4959
20800
answer