【发布时间】:2018-09-29 00:26:53
【问题描述】:
我正在尝试编写一个代码来计算在特定时区中距离午夜还有多少秒。
我定位的时区是 EDT,即“GMT-04:00”。
我发现许多主题都涉及时间计算,但没有一个能帮助我找出计算特定时区距离午夜的秒数的技巧。
谁能指出我正确的方向?
谢谢。
【问题讨论】:
-
在发布之前始终彻底搜索 Stack Overflow。
标签: android date time calendar
我正在尝试编写一个代码来计算在特定时区中距离午夜还有多少秒。
我定位的时区是 EDT,即“GMT-04:00”。
我发现许多主题都涉及时间计算,但没有一个能帮助我找出计算特定时区距离午夜的秒数的技巧。
谁能指出我正确的方向?
谢谢。
【问题讨论】:
标签: android date time calendar
我相信这就是您要寻找的逻辑? (不看问题,只看第一个答案,指Calendar、Locales和TimeZones)
https://stackoverflow.com/a/39757060/1552960
使用日历和时区来计算准确时间,然后只需使用该日历对象来查找另一个设置的日历对象在午夜之间的差异:)
long differenceInMillis =midnightCalendarObject.getTimeInMillis() - calendarObject.getTimeInMillis();
long secondsUntilMidnight = TimeUnit.toSeconds(differenceInMillis);
【讨论】:
ZoneId zone = ZoneId.of("America/New_York");
ZonedDateTime now = ZonedDateTime.now(zone);
ZonedDateTime midnight = now.toLocalDate().plusDays(1).atStartOfDay(zone);
long secondsLeftTillMidnight = Duration.between(now, midnight).getSeconds();
System.out.println("Seconds till midnight: " + secondsLeftTillMidnight
+ ". Time now: " + now + '.');
刚才的输出:
距午夜的秒数:34801。现在时间:2018-10-01T14:19:58.651572-04:00[America/New_York]。
java.time 吗?是的,java.time 在 Android 设备上运行良好。它只需要至少 Java 6。
org.threeten.bp 和子包中导入日期和时间类。java.time。【讨论】: