时间戳行为不当



前言:本程序为学校作业编写。当我在我的机器上运行程序时,一切似乎都很正常。但是,求值器在时间戳转换时会遇到问题。

public abstract class TimeUtil {
private static final Locale loc = Locale.getDefault();
private static final ZoneId localZoneId = ZoneId.systemDefault();
private static final ZoneId utcZoneId = ZoneId.of("Etc/UTC");
private static final ZoneId estZoneId = ZoneId.of("America/New_York");
public static final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
public static final LocalTime openHour = LocalTime.of(8, 0, 0);
public static final LocalTime closeHour = LocalTime.of(22, 0, 0);

public static LocalDateTime utcNow(){ return LocalDateTime.now(utcZoneId); }

public static LocalDateTime localNow(){ return LocalDateTime.now(localZoneId); }

public static LocalDateTime utcToLocal(LocalDateTime ldt){ return ldt.atZone(utcZoneId).withZoneSameInstant(localZoneId).toLocalDateTime(); }

public static LocalDateTime localToUtc(LocalDateTime ldt) { return ldt.atZone(localZoneId).withZoneSameInstant(utcZoneId).toLocalDateTime(); }

public static LocalDateTime utcToEst(LocalDateTime ldt) { return ldt.atZone(utcZoneId).withZoneSameInstant(estZoneId).toLocalDateTime(); }

public static LocalDateTime localToEst(LocalDateTime ldt) { return ldt.atZone(localZoneId).withZoneSameInstant(estZoneId).toLocalDateTime(); }
LocalDateTime start = TimeUtil.localToUtc(LocalDateTime.of(startDate.getValue() ,LocalTime.of(Integer.parseInt(startHour.getSelectionModel().getSelectedItem()),
Integer.parseInt(startMin.getSelectionModel().getSelectedItem()), 0)));
LocalDateTime end = TimeUtil.localToUtc(LocalDateTime.of(endDate.getValue(), LocalTime.of(Integer.parseInt(endHour.getSelectionModel().getSelectedItem()),
Integer.parseInt(endMin.getSelectionModel().getSelectedItem()), 0)));
if (TimeUtil.isValid(Integer.parseInt(apptId.getText()), start, end)) {

就像我提到的,我已经尝试了这个程序几十次,每次我都得到了预期的行为。我无法重现评估者所看到的行为。我检查了关于时间戳、时区、区域设置和服务器的问题,但没有找到任何有用的东西。提前感谢您的帮助!

我已经发现了这个问题。我在我的数据库连接字符串中使用?connectionTimeZone = SERVER,这是自动转换时间,然后我再次转换它们。

最新更新