3

我在这里查看了所有可能的答案,但我很难弄清楚这件事。

我在字符串中有 Json 日期。我想在不浪费时间的情况下转换成 Java 日期。

我也想从 Java 日期转换为 Json 日期字符串。

这就是我所拥有的。

String jsonDateString = "/Date(1295157600000-0600)/";
4

1 回答 1

2

您的时间有 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)/";
于 2012-06-02T19:56:34.990 回答