gpt4 book ai didi

java - 两个不同时区之间的时差计算?

转载 作者:行者123 更新时间:2023-12-04 07:54:19 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Time Difference of two different timezone

(5 个回答)


5 个月前关闭。




我想计算两个不同时区之间的时差,例如 country1 (GMT+05:30) 和 country2 (GMT+05:00)。如何计算。提前致谢。

最佳答案

您可以使用 java.time.Duration 找到它以 ISO-8601 standards 为蓝本并作为 JSR-310 implementation 的一部分随 Java-8 一起引入. Java-9 引入了一些更方便的方法。

import java.time.Duration;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;

public class Main {

public static void main(String[] args) {
// Test
System.out.println(formatDuration(diffBetweenTimeZones("GMT+05:30", "GMT+05:00")));
System.out.println(formatDuration(diffBetweenTimeZones("GMT+05:00", "GMT+05:30")));

// You can use the returned value to get the ZoneOffset which you can use for
// various kinds of processing e.g.
ZoneOffset offset = ZoneOffset.of(formatDuration(diffBetweenTimeZones("GMT+05:30", "GMT+05:00")));
System.out.println(offset);
System.out.println(OffsetDateTime.now(offset));
}

static Duration diffBetweenTimeZones(String tz1, String tz2) {
LocalDate today = LocalDate.now();
return Duration.between(today.atStartOfDay(ZoneId.of(tz1)), today.atStartOfDay(ZoneId.of(tz2)));
}

static String formatDuration(Duration duration) {
long hours = duration.toHours();
long minutes = duration.toMinutes() % 60;
String symbol = hours < 0 || minutes < 0 ? "-" : "+";
return String.format(symbol + "%02d:%02d", Math.abs(hours), Math.abs(minutes));

// ####################################Java-9####################################
// return String.format(symbol + "%02d:%02d", Math.abs(duration.toHoursPart()),
// Math.abs(duration.toMinutesPart()));
// ####################################Java-9####################################
}
}
输出:
+00:30
-00:30
+00:30
2021-03-24T10:37:31.056405+00:30
了解有关现代日期时间 API 的更多信息Trail: Date Time .
请注意 java.util日期时间 API 已过时且容易出错。建议完全停止使用,切换到 modern date-time API *.

* 无论出于何种原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport它将大部分 java.time 功能向后移植到 Java 6 和 7。如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请查看 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project .

关于java - 两个不同时区之间的时差计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66778197/

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