0

"\/Date(1339638938087-0500)\/"Web サービス API からの形式の String があります。

org.joda.time.DateTimeJavaを使用して、これを変数に入れるにはどうすればよいですか?

4

3 に答える 3

2

次の 2 つの情報を抽出する必要があります。

  • -2208967200000: UNIX エポック (1970 年 1 月 1 日 UTC) からのミリ秒
  • -0600: UTC からのオフセット

-2208967200000 の部分が UTC 午前 6 時を表しているため、この例では 1900 年 1 月 1 日午前 0 時を表していると想定しています。

これを Joda Time に変換するにDateTimeは、2 つの部分を抽出する必要があります (括弧の外側のすべてを取り除き、長さを使用して分割するか、中央の +/- 記号を見つけます)。

次に、最初の部分をlongミリ秒セクションの として解析します。次に、2 番目の部分を解析します。おそらく、時間、分、個別に署名します。(常にxHHmm の形式であると想定しています。ここで、x は記号、HH は 2 桁の分、mm は 2 桁の時間を表します。)

DateTimeZone.forHoursMinutesOffsetまたは同様のものを使用して、オフセットの固定タイムゾーンを作成します。

最後に、で時間を作成します

new DateTime(millis, zone);

ああ、それから、こんな恐ろしいフォーマットを作っている奴を蹴飛ばしてくれ…

于 2012-07-06T19:16:23.573 に答える
0

これはUNIXタイムスタンプのように見えます

UNIX タイム スタンプは、現在の合計秒数として時間を追跡する方法です。このカウントは、1970 年 1 月 1 日の Unix エポックから始まります。

于 2012-07-06T19:14:00.330 に答える
0

「2208967200000」が 1970 年 1 月 1 日 00:00:00 からのミリ秒単位の時間である場合、Date(time); のコンストラクターで使用できます。

String dateStr="Date(-2208967200000-0600)";
String timeInMillis=dateStr.Split("-")[1];
String utcStr=dateStr.Split("-")[2].Substring(0,4);
Date d=new Date(Long.parseLong(timeInMillis));

必要に応じて utcStr を処理できます (「-」の後の 2 番目の部分がタイム ゾーンの場合)。

于 2012-07-06T19:22:05.770 に答える