【问题标题】:How to Convert JSON Date Format to Simple Date Format? [duplicate]如何将 JSON 日期格式转换为简单日期格式? [复制]
【发布时间】:2018-03-24 05:13:38
【问题描述】:

我收到了 JSON 格式的 Date 响应,例如 /Date(1521866513877+0530)/,我想要这种格式的 24/03/2018 10:11:53

【问题讨论】:

标签: java json datetime datetime-format datetime-parsing


【解决方案1】:

如果没有本地方法来解析它,试试这个regex 模式:

\/Date\((\d+)\+(\d+)\)\/

我不是 java 人,但正则表达式无处不在。我看起来日期以 毫秒 为单位,因此您需要除以 1521866513877 / 1000 以获取时间戳。这是一个 PHP 示例:

preg_match_all('/\/Date\((\d+)\+(\d+)\)\//i', '/Date(1521866513877+0530)/', $matches);
if ($matches[0]) {
    $timestamp = $matches[1][0];
    $offset = $matches[2][0];

    echo date('m/d/Y H:i:s', (int)$timestamp / 1000);
}

【讨论】:

  • 这个问题被标记为 java,所以我想一个 Java 解决方案被问到了。
  • 是的,我知道这一点。我无法提供 java 代码,但他应该在使用 regex 时明白这一点
【解决方案2】:

Gson 类可以帮助您像这样序列化格式。并且默认它使用 SimpleDateFormat 对象进行序列化。使用 GsonBuilder 获取一个新的 Gson 对象来序列化日期格式,如 24/03/2018 10:11:53:

Gson gson = new GsonBuilder()  
  .setDateFormat("dd/MM/yyyy HH:mm:ss")  
  .create();  

【讨论】:

  • 如何将收到的字符串传递给这个?
【解决方案3】:

使用正则表达式从字符串中提取各个部分。 13 位数字是自纪元以来的毫秒数。将其解析为 long 并将其转换为 Instant(来自 java.time 的类,现代 Java 日期和时间 API)。将+0530 解析为ZoneOffset;它比 UTC 或 GMT 早 5 小时 30 分钟。将InstantZoneOffset 组合成OffsetDateTime。使用DateTimeFormatter 对其进行格式化。就是这样。

如果您仍然不知道该怎么做,请使用您的搜索引擎。所有这些都在 Internet 上的多个地方进行了解释。如果在阅读了教程和 API 文档并尽力而为之后,您仍然遇到困难,请在 Stack Overflow 上提出更具体的问题。请记住包括您的研究报告和您的最佳尝试以及它是如何失败的。从那里我们将能够为您提供更好的帮助。

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 2018-05-05
    • 2014-02-25
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多