1

サーバーから日付文字列を取得するESTので、それを変換します

例の日付2013-04-16T11:56:07.15

incidentDate = l.item(0).getTextContent();                                  
DateFormat dformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS",Locale.US);
dformat.setTimeZone(TimeZone.getTimeZone("America/New York"));
Date timestamp;

try
{                                   
    timestamp = dformat.parse(incidentDate);
    incidentDateLong = timestamp.getTime();

}
catch (ParseException e1) {
    e1.printStackTrace();
}

返されるタイムスタンプは1366113367015

それをこのウェブサイトのコンバーターに差し込んで日付を確認すると

http://www.ruddwire.com/handy-code/date-to-millisecond-calculators/

ミリ秒が正しい日付ではないようですTue Apr 16 2013 07:56:07 GMT-0400 (Eastern Daylight Time)。サーバーから送信されたものではないことがわかります。

日付を元に戻すと、日付が実際の日付からさらに引き戻されます

Date incDate = new Date(dateInMili);

DateFormat dformat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a",Locale.US);

String dateStr = dformat.format(incDate);

フォーマッタに何か問題がありますか? 問題がわかりません

4

1 に答える 1

2

これが問題です:

TimeZone.getTimeZone("America/New York")

有効なタイム ゾーン ID ではありません。あなたがしたい:

TimeZone.getTimeZone("America/New_York")

アンダースコアに注意してください。getTimeZone個人的には、あなたが求めたタイムゾーンが実際に見つからなかったという兆候を示さないのは残念だと思いますが、それは長い間そうでした:(

于 2013-04-16T16:35:21.790 に答える