gpt4 book ai didi

java - 将 EDT/EST 转换为 UTC

转载 作者:行者123 更新时间:2023-11-30 04:21:16 30 4
gpt4 key购买 nike

下面的代码似乎转换为 BST。我是不是做了什么蠢事?

import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.junit.Test;

import java.util.Arrays;
import java.util.List;

public class Test {
@Test
public void testTimeInterval(){
String DAY_SHIFT="08:00-17:15";
System.out.println(toInterval(DAY_SHIFT, "America/New_York", "UTC"));
}

public static final String TIME_FORMAT = "HH:mm";
public static List<LocalTime> toInterval(String str, String sourceTZ, String destTZ) {
if (!StringUtils.isBlank(str)){
final DateTimeFormatter timeFormat = DateTimeFormat.forPattern(TIME_FORMAT).withZone(DateTimeZone.forID(sourceTZ));
String[] tokens = str.split("-");
if (tokens!=null && tokens.length==2){
try{
long start = timeFormat.parseMillis(tokens[0]);
long end = timeFormat.parseMillis(tokens[1]);
DateTime startTime = new DateTime(start, DateTimeZone.forID(sourceTZ)).toDateTime(DateTimeZone.forID(destTZ));
DateTime endTime = new DateTime(end, DateTimeZone.forID(sourceTZ)).toDateTime(DateTimeZone.forID(destTZ));
return Arrays.asList(new LocalTime(startTime, DateTimeZone.forID(destTZ)),
new LocalTime(endTime, DateTimeZone.forID(destTZ)));
}
catch (IllegalArgumentException e){
e.printStackTrace();
}
}
};
return null;
}
}

上面的代码打印[13:00:00.000, 22:15:00.000]。根据this链接,休息一小时应该是 [12:00:00.000, 21:15:00.000]

最佳答案

提供了一天中的某个时间。您对哪一天感兴趣?这将影响到 UTC 的映射。如果您指的是今天,您应该明确指定。看起来您确实想解析为 LocalTime,然后通过将其与一些适当的 LocalDate 连接来构造适当的 LocalDateTime (这将取决于您想要实现的目标)。

我的猜测是,它实际上是在 1970 年 1 月 1 日执行的 - 此时纽约的 UTC 偏移量是 -5,而不是 -4。您可以通过完整记录 startTimeendTime 来验证这一点。

同样为了简单起见,我强烈建议在方法开始时调用 DateTimeZone.forId 两次,而不是每次需要区域时都调用。 p>

您还应该考虑如果本地日期/时间不明确或可能由于 DST 转换而被跳过,您希望发生什么情况。如果您选择一个不包含任何过渡的日期,这当然永远不会发生。

关于java - 将 EDT/EST 转换为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16961761/

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