15

IST示されているように、(インド標準時)でバックエンドから日付/時刻を取得するプロジェクトに取り組んでいます"2013-01-09T19:32:49.103+05:30"。ただし、次の DateFormat を使用して解析すると

DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

続いて解析..

Date date = sdf.parse("2013-01-09T19:32:49.103+05:30");


System.out.println("XYZ ==============>"+date);

出力としてGMT形式で日付を表示する

Wed Jan 09 14:02:49 GMT+00:00 2013.

TimeZone クラスを次のように使用してみました。

TimeZone timeZone=TimeZone.getTimeZone("IST");
sdf.setTimeZone(timeZone);

しかし効果なし..

GMT ではなくDateDate 形式のクラス オブジェクトを取得するにはどうすればよいですか...IST

適切な解決策を提供してください..

編集:

コードは次のようになります。

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

TimeZone timeZone=TimeZone.getTimeZone("IST");
sdf.setTimeZone(timeZone);

Date date = sdf.parse("2013-01-09T19:32:49.103+05:30");
String formattedDate=sdf.format(date);

System.out.println("XYZ ==============>"+formattedDate);
4

4 に答える 4

31

日付にはタイムゾーンがありません。これは、1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数のホルダーです。解析に使用したものと同じ DateFormat を使用し、IST タイムゾーンを設定して、次の例のように日付をフォーマットします。

    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
    Date date = sdf.parse("2013-01-09T19:32:49.103+05:30"); 
    sdf.setTimeZone(TimeZone.getTimeZone("IST"));
    System.out.println(sdf.format(date));

出力

2013-01-09T19:32:49.103+05:30

XXX パターンは、1.7 以降、ISO 8601 タイム ゾーン (-08:00) に使用されることに注意してください。1.6 を使用している場合は、 を試してくださいZ。フォーマット パターンの詳細については、SimpleDateFormat API を参照してください。

于 2013-01-14T07:09:46.890 に答える
3

GMT ではなく IST 形式の日付を持つ Date クラス オブジェクトを取得するにはどうすればよいですか...

できません。形式やタイムゾーンDateはありません。これは、UTC 1970 年 1 月 1 日の真夜中の Unix エポックからのミリ秒数を表すだけです。代わりに、常にデフォルトのタイム ゾーンを使用します。Date.toString()

特定の形式とタイム ゾーンを使用するには、DateFormat代わりに を使用しDate.toString()ます。でタイムゾーンを設定し、を使用しDateFormat.setTimeZone()て に変換できます。それ自体には、作成のためのいくつかのファクトリ メソッドがあります。または、特定のパターンを指定する場合に使用できます。DateStringDateFormat.format()DateFormatSimpleDateFormat

Abu が言うように、Joda Time 組み込み API よりもはるかに優れた日付/時刻 API ですが、日付/時刻をフォーマットするだけであれば、標準ライブラリは悪い仕事をしません。DateFormatとそのサブクラスは一般にスレッドセーフではないことに注意してください。

于 2013-01-14T07:04:03.540 に答える
2
于 2016-12-06T05:00:20.003 に答える
2

これは、Calender クラスを使用するだけで簡単に実行できます。以下のスニペットを確認してください。

Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
calendar.setTimeInMillis(<--time stamp-->);
//calendar.setTime(<--date object of gmt date-->); 
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy 'at' hh:mm a");
sdf.setTimeZone(TimeZone.getDefault());
String result=sdf.format(calendar.getTime()); 
于 2014-08-20T07:46:09.167 に答える