首页 > 解决方案 > 在java上将epoch json格式字符串转换为日期

问题描述

我有一个从服务收到的字符串是一个日期,这个日期有这个格式"/Date(1607490140063-0600)/"是一个字符串,现在我需要在 java 上从一个字符串转换为日期格式,我尝试了不同的方法但没有工作

String endTime = getPunchTime();
SimpleDateFormat timeFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss Z");
Date d2 = timeFormat.parse(endTime);

标签: java

解决方案


编写解析值的辅助方法,并使用正则表达式解析文本,例如:

static OffsetDateTime parseJsonDate(String s) {
    Pattern p = Pattern.compile("/Date\\((-?\\d+)([+-]\\d{4})\\)/");
    Matcher m = p.matcher(s);
    if (! m.matches())
        throw new DateTimeParseException("Not a valid JSON Date string: " + s, s, 0);
    return Instant.ofEpochMilli(Long.parseLong(m.group(1))).atOffset(ZoneOffset.of(m.group(2)));
}

测试

System.out.println(parseJsonDate("/Date(1607490140063-0600)/"));

输出

2020-12-08T23:02:20.063-06:00

推荐阅读