gpt4 book ai didi

java - Android kotlin 中的夏令时

转载 作者:行者123 更新时间:2023-12-05 00:18:27 30 4
gpt4 key购买 nike

我正在尝试获取下一个夏令时的日期,但无法获取。例如,我需要的是获取这个日期:2021 年 3 月 28 日星期日 2:00:00

-> 这里我得到了日期: https://www.timeanddate.com/time/change/spain/madrid

我知道TimeZoneobservesDaylightTimeinDaylightTime函数。
但我需要的是日期,而不是是否在范围内。

我也知道在 iOS(swift) 中有一个函数:TimeZone.current.nextDaylightSavingTimeTransition

有人知道如何获得这个日期吗?

谢谢!!

最佳答案

您可以在 Kotlin 中使用 java.time

您需要的基本上是一个 ZoneOffsetTransition,它表示与 UTC 的时间偏移有关的更改。

这是我在 Kotlin Playground 中尝试过的一个小示例:

import java.time.Instant
import java.time.LocalDate
import java.time.ZoneId
import java.time.zone.ZoneOffsetTransition
import java.time.zone.ZoneRules

fun main() {
// create your desired zone
val madridZoneId = ZoneId.of("Europe/Madrid");

// receive the rules of that zone
var rules = madridZoneId.getRules();

// receive the next transition from now/today
var nextTransition = rules.nextTransition(Instant.now());

// and print it
println("Next DST change in "
+ madridZoneId
+ ": "
+ nextTransition.getInstant()
.atZone(madridZoneId)
.toLocalDate());

// receive the transition after next using the next
var transitionAfterNext = rules.nextTransition(nextTransition.getInstant());

// and print that, too
println("DST change after next in "
+ madridZoneId
+ ": "
+ transitionAfterNext.getInstant()
.atZone(madridZoneId)
.toLocalDate());
}

结果(最后执行于2021-06-03):

Next DST change in Europe/Madrid: 2021-10-31
DST change after next in Europe/Madrid: 2022-03-27

请注意,这仅适用于实际上有夏令时的区域...

来自JavaDocs of ZoneOffsetTransition :

If the zone defines daylight savings into the future, then the list will normally be of size two and hold information about entering and exiting daylight savings. If the zone does not have daylight savings, or information about future changes is uncertain, then the list will be empty.

关于java - Android kotlin 中的夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67818853/

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