gpt4 book ai didi

java - 使用java更快地将时区转换为日期

转载 作者:行者123 更新时间:2023-12-02 00:39:31 24 4
gpt4 key购买 nike

我编写了这个方法来转换日期时区。如何进一步减少该方法的执行时间。

public static Timestamp convertTimeZone(final Timestamp fromDate, final TimeZone fromTZ, final TimeZone toTZ ){
Long timeInDate = fromDate.getTime() ;
int fromOffset = fromTZ.getOffset(timeInDate);
int toOffset = toTZ.getOffset(timeInDate);
Timestamp dateStamp = new Timestamp(fromDate.getTime());

if (fromOffset >= 0){
int diff = 0;

if (toOffset > 0){
diff = (fromOffset - toOffset);
} else {
diff = (fromOffset + Math.abs(toOffset));
}

long date = fromDate.getTime() - diff;
dateStamp.setTime(date);
} else {
int diff = 0;

if (toOffset > 0){
diff = (Math.abs( fromOffset) + toOffset);
} else {
diff = (Math.abs( fromOffset) - Math.abs(toOffset));
}

long date = fromDate.getTime() + diff;
dateStamp.setTime(date);
}

return dateStamp;
}

最佳答案

joda-time它可能看起来像这样:

DateTime dt = new DateTime(DateTimeZone.forID("GMT"));
System.out.println(dt); // 5 am
dt = dt.withZone(DateTimeZone.forID("EET"));
System.out.println(dt); // 8 am

请注意,Timestamp 没有时区的概念,因此不适合表示时区。

您的解决方案将具有良好的运行时间,因为它的复杂度为 O(1)。不过阅读起来比较困难。

关于java - 使用java更快地将时区转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771699/

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