【问题标题】:JAVA GSON date converter : How to get midnight as 00:00 AM instead of 12:00 AMJAVA GSON日期转换器:如何将午夜作为00:00 AM而不是12:00 AM
【发布时间】:2018-11-26 09:05:46
【问题描述】:

我使用 GSON 来获取具有不同数据的 Json。一切正常,但是当用户键入 00:30:00 AM 作为午夜半时,它被转换为 12:30:00 AM。我想把它设置为 00:30:00 AM。 有没有办法在不改变日期转换中的任何其他内容的情况下做?

【问题讨论】:

  • GSON 是否以该格式将时间作为字符串提供给您? (在我学习 AM/PM 系统的地方,12:30 AM 是正确的午夜半点,顺便说一句。)
  • 是的,它是字符串格式。我需要将午夜到凌晨 1 点之间的所有时间更改为 00:{the right minute}:00

标签: java json date gson


【解决方案1】:

我更愿意说服 GSON 给我所需的格式,但抱歉,我不了解 GSON,因此无法告诉您这是否可能。但是,如果不是,当您知道如何重新格式化您得到的字符串时并不困难:

    DateTimeFormatter gsonTimeFormatter = DateTimeFormatter.ofPattern("hh:mm:ss a");
    DateTimeFormatter desiredTineFormatter = DateTimeFormatter.ofPattern("KK:mm:ss a");
    String timeStringFromGson = "12:30:00 AM";
    LocalTime time = LocalTime.parse(timeStringFromGson, gsonTimeFormatter);
    String formattedTime = time.format(desiredTineFormatter);
    System.out.println(formattedTime);

这个 sn-p 的输出是:

上午 00:30:00

格式模式字母hh(小写)和KK(大写)均表示上午或下午的小时,但前者从 01 到 12,后者从 00 到 11,因此为您提供所需的小时,如果 GSON 的时间恰好是 12 点。

【讨论】:

    【解决方案2】:

    在从 Gson builder 创建 gson 对象时设置日期格式。

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

    【讨论】:

    • 我想你没有得到我的问题。或者我可能没有得到你的答案,但我不明白 setDateFormat(HH:mm) 如何让我得到 00:30:00 AM 而不是 12:30:00 AM?
    • @Jean 您的问题是在乞求错误的答案,因为您没有发布任何代码让我们能够理解、重现和解决问题。发布一个完整的最小示例来重现问题。
    • 已添加 ss 几秒钟。只是想知道为什么在 00-23 小时需要上午。
    • 原代码不是我的。这就是为什么我想尽可能少地触摸生成的 Json。 Json 从不发送 12-24 小时。但是使用这个 Json 的应用程序会生成 00-24 小时。
    • 这个答案会如何对待,比如01:15:00 PM
    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多