"\/Date(1339638938087-0500)\/"
Web サービス API からの形式の String があります。
org.joda.time.DateTime
Javaを使用して、これを変数に入れるにはどうすればよいですか?
次の 2 つの情報を抽出する必要があります。
-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);
ああ、それから、こんな恐ろしいフォーマットを作っている奴を蹴飛ばしてくれ…
これはUNIXタイムスタンプのように見えます
UNIX タイム スタンプは、現在の合計秒数として時間を追跡する方法です。このカウントは、1970 年 1 月 1 日の Unix エポックから始まります。
「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 番目の部分がタイム ゾーンの場合)。