ここで考えられるすべての答えを調べましたが、このことを理解するのに苦労しています。
文字列に Json の日付があります。時間を無駄にすることなく Java Date に変換したい。
また、Java Date から Json Date 文字列に変換したいと思います。
ここに私が持っているものがあります。
String jsonDateString = "/Date(1295157600000-0600)/";
あなたの時間には 2 つの部分があります: ミリ秒単位の現地時間と、時間と分単位のオフセットです。ミリ秒単位の UTC を取得するには、それらを解析して「追加」する必要があります。
この関数を使用してそれを行うことができます:
private static Pattern p = Pattern.compile("\\((\\d+)([+-]\\d{2})(\\d{2})\\)");
public static Date jd2d(String jsonDateString) {
Matcher m = p.matcher(jsonDateString);
if (m.find()) {
long millis = Long.parseLong(m.group(1));
long offsetHours = Long.parseLong(m.group(2));
long offsetMinutes = Long.parseLong(m.group(3));
if (offsetHours<0) offsetMinutes *= -1;
return new Date(
millis
+ offsetHours*60l*60l*1000l
+ offsetMinutes*60l*1000l
);
}
return null;
}
JSON 日付を「戻す」には、UTC 時刻をエンコードするだけです。
String jsonDate = "/Date("+date.getTime()+"+0000)/";