当前位置: 首页 > 面试题库 >

转换JSON日期格式

雍马鲁
2023-03-14
问题内容

我收到的日期值是这样的JSON对象:

{"PostingDate":"\/Date(1325134800000-0500)\/"}

我想用Java代码将其解析为Date或作为String

我想知道什么是简单的方法。


问题答案:

我认为第一个数字(1325134800000)是自纪元以来的毫秒数,并且-0500是时区。鉴于以下示例代码似乎是这种情况,它似乎可以满足您的要求。

以下代码使用Jackson解析JSON输入,如果您还没有选择的JSON解析库,我建议您这样做。它缺少错误检查等。

样例代码:

public final class Foo
{
    public static void main(final String... args)
        throws IOException
    {
        // What the JSON value must match exactly
        // Not anchored since it will be used with the (misnamed) .matches() method
        final Pattern pattern
            = Pattern.compile("\\\\/Date\\((\\d+)(-\\d+)?\\)\\\\/");

        final ObjectMapper mapper = new ObjectMapper();

        // Parse JSON...
        final JsonNode node = mapper.readTree(
            "{\"PostingDate\": \"\\/Date(1325134800000-0500)\\/\"}");

        if (!node.has("PostingDate")) {
            System.err.println("Bad JSON input!");
            System.exit(1);
        }

        // Get relevant field
        final String dateSpec = node.get("PostingDate").getTextValue();

        // Try and match the input.
        final Matcher matcher = pattern.matcher(dateSpec);

        if (!matcher.matches()) {
            System.err.println("Bad pattern!"); // Yuck
            System.exit(1);
        }

        // The first group capture the milliseconds, the second one the time zone

        final long millis = Long.parseLong(matcher.group(1));
        String tz = matcher.group(2);
        if (tz.isEmpty()) // It can happen, in which case the default is assumed to be...
            tz = "+0000";

        // Instantiate a date object...    
        final Date date = new Date(millis);

        // And print it using an appropriate date format
        System.out.printf("Date: %s %s\n",
            new SimpleDateFormat("yyyy/MM/dd HH:MM:ss").format(date), tz);
    }
}

输出:

Date: 2011/12/29 06:12:00 -0500


 类似资料:
  • 问题内容: 我正在使用需要json日期格式的API。 我需要转换我的JavaScript日期 1970年1月17日星期六格林尼治标准时间+0100(浪漫标准时间) 以json日期格式 /日期(1405699200)/ 问题答案: 列各项可以吗?

  • 问题内容: 我有日期的字符串形式: 我想将其格式化为 我在用 但它不起作用。 我如何转换为? 问题答案: 试试这个 现在

  • 问题内容: 我有django表单,我从POST收到一个格式为“%d /%m/%Y”的日期,我想将其转换为“%Y-%m-%d”,我该怎么办? 问题答案: 使用strptime和strftime: 同样,在Django模板语法中,您可以使用日期过滤器: 以您喜欢的格式打印日期。

  • 请帮助更改日期格式。 **源**json文件 **目标**员工对象 我需要支持将文件json日期转换为对象。来自文件 对象 对象 库“com.fasterxml.jackson.datatype:jackson-datatype-jsr310” 日期:<代码>java。时间本地日期 我的目标是从文件中读取json数据并将其映射到对象。

  • 我想创建一个“yyyy-mm-dd hh:mm:ss”格式的日期对象。下面是我正在使用的代码。解析字符串后形成的日期对象不是所需的格式(预期为:2020-04-04 00:00:00,但实际为:Sat Apr 04 00:00:00 CDT 2020)。如何将日期转换为所需格式

  • 问题内容: 我的json 响应 包含一个 CreatedOn 日期: 我需要将 CreatedOn 转换为简单的日期格式,并 计算从CreatedOn日期到当前日期的差异天数。 当我调试下面的代码字符串 CreatedOn时 显示一个空值。怎么会? 问题答案: 要么 考虑使用JSON方法而不是包含。JSON具有“ has()”,用于验证密钥是否存在。 您还应该确保首先尝试{}捕获{}字符串,以确保