次のようなラウンドトリップ データ パターンに timedate 文字列があります2012-07-05T11:30:44.1533815Z
。これは、一部の .NET サービスに由来します。
long
Javaに変換するにはどうすればよいですか?
私が試しSimpleDateTimeFormat
たのは、正しいフォーマット指定子を理解できないようです..
これを試して:
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();
}
乾杯
これは 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 形式を正しい方法で解析します。
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();
しかし、日付の最後の文字の意味を確認する必要がありますか? それはタイムゾーンの定義ですか?それを特定せず、単純にエスケープすると、日付が間違ったタイム ゾーンで解釈される危険があります。
これを試して:
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) {
.....
}