gpt4 book ai didi

java - 如何在 Android 中转换日期和时间

转载 作者:行者123 更新时间:2023-12-02 00:57:59 25 4
gpt4 key购买 nike

在我的应用程序中,我想从服务器获取一些数据,并且我应该转换日期和时间!
我从服务器收到格式为 end_date: "2020-04-08 13:11:14" 的日期和时间。

我想从我的设备获取当前日期和时间,并使用上述日期(end_date)进行计算,如果这次低于 24 小时,我应该显示例如 15 小时后,但如果这次超过 24 小时,我应该显示2 天后!

但我不知道怎么办?
您可以帮我发送代码或发送给我其他教程吗?!
我搜索过,但没有找到任何东西。

最佳答案

java.time

现代方法使用java.time类。

Table of date-time types in Java, both modern and legacy

将输入字符串解析为 LocalDateTime .

要解析,请将中间的空格替换为 T 以符合 ISO 8601标准。

String input = "2020-04-08 13:11:14".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input ) ;

您的输入缺少任何时区或与 UTC 的偏移量的指示符。因此,我们不知道这是否是日本东京的下午 1 点、法国图卢兹的下午 1 点,还是美国俄亥俄州托莱多的下午 1 点。因此您无法可靠地将其与当前日期和时间进行比较。

如果您想假设此字符串旨在告知您所在时区的时间,则指定一个时区以获得 ZonedDateTime .

ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
ZonedDateTime then = ldt.atZone( z ) ;

捕捉同一区域的当前时刻。

ZonedDateTime now = ZonedDateTime.now( z ) ;

24小时后计算。

ZonedDateTime twentyFourHoursFuture = now.plusHours( 24 ) ;

比较。

boolean within24Hours = then.isBefore( twentyFourHoursFuture ) ;

使用 Duration 确定耗时类。

Duration duration = Duration.between( then , now ) ;

如果您想信任 JVM 当前的默认时区,请调用 ZoneId.systemDefault。请注意,在应用程序执行期间,其他 Java 代码可能会更改此默认值。

ZoneId z = ZoneId.systemDefault() ;
<小时/>

关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

要了解更多信息,请参阅 Oracle Tutorial 。并在 Stack Overflow 上搜索许多示例和解释。规范为JSR 310 .

Joda-Time项目,现在位于 maintenance mode ,建议迁移到java.time类。

您可以直接与数据库交换java.time对象。使用JDBC driver符合JDBC 4.2或稍后。不需要字符串,不需要 java.sql.* 类。

从哪里获取java.time类?

ThreeTen-Extra项目通过附加类扩展了 java.time。该项目是 java.time future 可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter ,和more .

关于java - 如何在 Android 中转换日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61076142/

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