2

次のようなラウンドトリップ データ パターンに timedate 文字列があります2012-07-05T11:30:44.1533815Z。これは、一部の .NET サービスに由来します。

longJavaに変換するにはどうすればよいですか?

私が試しSimpleDateTimeFormatたのは、正しいフォーマット指定子を理解できないようです..

4

5 に答える 5

5

これを試して:

public long getTime(String time) throws ParseException {
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'");
  Date date = df.parse(time);

  return date.getTime();
}

乾杯

于 2012-07-05T12:00:04.753 に答える
2

これは iso 形式の日時であるため、次のように優れた Joda 日時ライブラリを使用して簡単に解析できます。

DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
DateTime dt = fmt.parseDateTime("2012-07-05T11:30:44.1533815Z");
long dtl = dt.getMillis();

「入力と出力」の章のJoda ユーザーガイドとhttp://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.htmlを参照してください。ISO8601 形式を正しい方法で解析します。

于 2012-07-05T12:09:31.727 に答える
2

SimpleDateFormatを使用して Date に解析する必要があります。

日付から、getTime() を使用して、ミリ秒単位の UNIX エポックを取得できます。これは長いです。

これは次のように始まります:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSS'Z'", Locale.ENGLISH);
long myTime = format.parse("2012-07-05T11:30:44.1533815Z").getTime();

しかし、日付の最後の文字の意味を確認する必要がありますか? それはタイムゾーンの定義ですか?それを特定せず、単純にエスケープすると、日付が間違ったタイム ゾーンで解釈される危険があります。

于 2012-07-05T11:50:56.827 に答える
2

これを試して:

try {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-dd'T'HH:mm:ss.SSSSSSS'Z'");
    long time = dateFormat.parse("2012-07-05T11:30:44.1533815Z").getTime();
} catch (ParseException e) {
              .....
}
于 2012-07-05T11:56:14.560 に答える