gpt4 book ai didi

java - 将时间 "PT10H30M"转换为 "10:30 AM"时间JAVA Android

转载 作者:行者123 更新时间:2023-12-02 02:43:02 24 4
gpt4 key购买 nike

我正在尝试将“PT10H30M” 格式的时间转换为“10:30 AM” 格式并将其保存在日期 、Java Android 中的时间或时间戳变量。

有什么解决方案可以做到这一点吗?

最佳答案

从技术上讲,PT10H30M 不是时间,而是代表 duration :一段时间(10 小时 30 分钟)。该字符串符合标准 ISO 8601格式。

尽管“名称”(10 小时 30 分钟)与 10:30 AM(10 小时 30 分钟 AM)类似,但它们完全不同概念:

  • 10:30 AM 代表一天中的某个时间
  • PT10H30M 表示时间量 - 例如,可以添加到日期/时间:
    • 01:00 AM 加上 PT10H30M 的持续时间得出 11:30 AM
    • 11:00 PM 加上 PT10H30M 的持续时间得出第二天的 09:30 AM
<小时/>

无论如何,您可以通过将 PT10H30M 的持续时间添加到午夜 (00:00) 来实现您想要的效果。

在 Android 中,您可以使用 ThreeTen Backport ,Java 8 新日期/时间类的一个很好的向后移植。您还需要ThreeTenABP (更多关于如何使用它 here )。

您可以使用 LocalTime (代表时间,包括小时、分钟、秒和 nanoseconds ),使用 constant for midnight 00:00:00.0,并添加 Duration给它:

import org.threeten.bp.LocalTime;
import org.threeten.bp.Duration;

LocalTime time = LocalTime.MIDNIGHT.plus(Duration.parse("PT10H30M"));

结果将是一个时间变量,其中保存与10:30 AM相对应的值。

<小时/>

如果你想要相应的String,可以使用org. Threeten.bp.format.DateTimeFormatter:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("h:mm a", Locale.ENGLISH);
System.out.println(time.format(fmt));

结果是一个值为 10:30 AMString。 (请注意,我还使用了 java.util.Locale 来确保它正确格式化 String)。

关于java - 将时间 "PT10H30M"转换为 "10:30 AM"时间JAVA Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45109750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com