【发布时间】:2012-06-07 14:10:28
【问题描述】:
我在这里查看了所有可能的答案,但我很难弄清楚这件事。
我在字符串中有 Json 日期。我想在不浪费时间的情况下转换为 Java 日期。
我还想将 Java Date 转换为 Json Date 字符串。
这就是我所拥有的。
String jsonDateString = "/Date(1295157600000-0600)/";
【问题讨论】:
我在这里查看了所有可能的答案,但我很难弄清楚这件事。
我在字符串中有 Json 日期。我想在不浪费时间的情况下转换为 Java 日期。
我还想将 Java Date 转换为 Json Date 字符串。
这就是我所拥有的。
String jsonDateString = "/Date(1295157600000-0600)/";
【问题讨论】:
您的时间有两部分:以毫秒为单位的本地时间,以及以小时和分钟为单位的偏移量。您必须解析它们并“添加”它们以获得毫秒 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)/";
【讨论】:
-0600?这就是偏移量,不幸的是被称为“JSON 日期”的一个完全被接受的部分。哦,我多么讨厌这个词!为什么会出现这种可怕的格式? ISO 8601 有什么问题或只是简单的毫秒! OH THE HORROR! OH MY EYES!!