如何获取Android另一个时区中一天的开始时间和结束时间

问题描述 投票:0回答:1

我的日期格式为:YYYY-MM-DD

而且我想以ISO格式获取日期,分别是America / Chicago时区中的一天的开始时间(从12:00 AM开始)和一天的结束时间(在11:59 PM结束)。

例如对于日期:2020-06-08(6月8日),转换后的最终输出如下:

一天的开始时间为日期:2020-06-08T05:00:00.000Z

当天的结束时间为日期:2020-06-09T04:59:59.999Z

如果有人有相同的提示,请在这里帮助我。

java android date time date-conversion
1个回答
0
投票
我建议使用Java.time(现代Java日期和时间API)进行此类日期和时间数学。

ZoneId zone = ZoneId.of("America/Chicago"); String dateString = "2020-06-08"; LocalDate date = LocalDate.parse(dateString); Instant startOfDay = date.atStartOfDay(zone).toInstant(); Instant endOfDay = date.plusDays(1).atStartOfDay(zone).toInstant(); System.out.println("The day is from " + startOfDay + " (inclusive) to " + endOfDay + " (exclusive)");

输出为:

  

日期是从2020-06-08T05:00:00Z(含)到 2020-06-09T05:00:00Z(独家)

为了不排除一天的最后一毫秒,我们需要将这一天算作第二天的第一天。如果您确实坚持要减去毫秒或十亿分之一秒,那么这当然取决于您。

问题:java.time是否不需要Android API 26级?

java.time在较新和较旧的Android设备上均可正常运行。它只需要至少

Java 6。

在Java 8和更高版本以及更新的Android设备(来自API级别26)中,内置了现代API。

    在非Android Java 6和7中,获得了ThreeTen Backport,这是现代类的backport(JSR 310的ThreeTen;请参见底部的链接。
  • 在(较旧的)Android上,请使用Android版的ThreeTen Backport。叫做ThreeTenABP。并确保使用子包从org.threeten.bp导入日期和时间类。
  • 链接
  • Oracle tutorial: Date Time解释如何使用java.time。

  • © www.soinside.com 2019 - 2024. All rights reserved.