2

2017-01-02T01:41:24Zは私の実際の日付形式であり、この日付を形式に変換したいと考えていyyyy-MM-dd hh:mmaます。

これまでに試した次のコードをご覧ください。

  String newsDate = "2017-01-02T01:41:24Z";
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma");
        Date date = null;
        try
        {
            date = sdf.parse(newsDate);
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }

しかしdate = sdf.parse(newsDate);、次のエラーが表示されます。

"解析不能な日付: "2017-01-02T01:41:24Z" (オフセット 10)".

私を導いてください、私はどこで間違っていたのでしょうか?

4

4 に答える 4

5

正しくない別の日付形式を使用しているためです。

これを変える

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mma");

これに

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
于 2017-01-02T07:46:30.147 に答える
1

これを試して:

   String newsDate = "2017-01-02T01:41:24Z";    
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
   SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma");

   try {
        texview.setText(sdf1.format(sdf.parse(newsDate)));
        } catch (ParseException e) {
          e.printStackTrace();
          System.out.println("bad pattern");
        }
于 2017-01-02T07:57:10.560 に答える
1

これは私にとって完璧に機能します。

 String dateNew= "2017-01-02T01:41:24Z";

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mma");


try {
    texview.setText(sdf1.format(sdf.parse(dateNew)));
    } catch (ParseException e) {
      e.printStackTrace();
      System.out.println("bad pattern");
    }
于 2018-02-04T17:17:47.870 に答える
0

タイムゾーン/オフセット - 解釈に関して、他の答えは間違っています。末尾の「Z」は UTC+00:00 を表し、単なるリテラルとして解釈してはなりません。Androidのドキュメントでは、この種の入力を処理できる適切なパターン シンボル X が定義されています。この詳細を気にしないと、例外は発生せず、間違ったデータが返されます (これはさらに悪いことです)。

したがって、時間部分の修正を含む最終的な解決策は次のようになります。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");

注: コロンのないオフセットがある場合は、XXX の代わりに XX を使用します。

于 2017-01-02T11:04:18.490 に答える