Java 如何从SQL Datetime UTC转换为LocalDateTime并再次转换

Java 如何从SQL Datetime UTC转换为LocalDateTime并再次转换,java,mysql,Java,Mysql,代码应该从数据库中获取日期和时间,将其标记为UTC(或者它应该已经知道它是UTC?),将其转换为本地时区,然后将日期和时间作为时间戳返回 目前,代码仅打印出数据库中的日期/时间,并将本地时间保存到数据库中 我的代码解释错了吗?我是否错过了转换时间的步骤 感谢您提供的任何额外帮助 包UTIL; 导入java.sql.Date; 导入java.sql.Timestamp; 导入java.time.Instant; 导入java.time.LocalDate; 导入java.time.LocalDa

代码应该从数据库中获取日期和时间,将其标记为UTC(或者它应该已经知道它是UTC?),将其转换为本地时区,然后将日期和时间作为时间戳返回

目前,代码仅打印出数据库中的日期/时间,并将本地时间保存到数据库中

我的代码解释错了吗?我是否错过了转换时间的步骤

感谢您提供的任何额外帮助


包UTIL;
导入java.sql.Date;
导入java.sql.Timestamp;
导入java.time.Instant;
导入java.time.LocalDate;
导入java.time.LocalDateTime;
导入java.time.LocalTime;
导入java.time.ZoneId;
导入java.time.ZoneOffset;
导入java.time.ZonedDateTime;
公共类日期时间转换器{
公共静态时间戳toLocalDateTime(utc时间戳){
//确定为UTC
ZonedDateTime utcZonedDateTime=ZonedDateTime.ofInstant(utc.toInstant(),ZoneId.of(“utc”);
即时时间戳=utcZonedDateTime.toInstant();
//将时间戳设置为系统默认区域
ZonedDateTime utcToLocal=timestamp.atZone(ZoneId.systemDefault());
System.out.println(Timestamp.from(utcToLocal.toInstant());
返回Timestamp.from(utcToLocal.toInstant());
}
公共静态时间戳toUTC(时间戳ldt){
//标识为系统默认区域ID
ZonedDateTime localZDT=ZonedDateTime.ofInstant(ldt.toInstant(),ZoneId.systemDefault());
即时时间戳=localZDT.toInstant();
//将时间戳设置为UTC zoneid
ZonedDateTime localToUTC=timestamp.atZone(ZoneId.of(“UTC”));
System.out.println(Timestamp.from(localToUTC.toInstant());
返回Timestamp.from(localToUTC.toInstant());
}
}

公共静态时间戳toLocalDateTime(utc时间戳){
LocalDateTime ldt=utc.toLocalDateTime();
ZonedDateTime zdt=ldt.atZone(ZoneId.of(“UTC”));
ZoneDateTime newZdt=zdt.withZoneSameInstant(ZoneId.systemDefault());
LocalDateTime newLdt=newZdt.toLocalDateTime();
返回时间戳.valueOf(newLdt);
}
公共静态时间戳toUTC(时间戳ts){
LocalDateTime ldt=ts.toLocalDateTime();
ZonedDateTime zdt=ldt.atZone(ZoneId.systemDefault());
ZoneDateTime newZdt=zdt.和ZoneSameinstant(ZoneId.of(“UTC”));
LocalDateTime newLdt=newZdt.toLocalDateTime();
返回时间戳.valueOf(newLdt);
}

演示如何调用这些方法。准确的数值是多少?应该是多少?谢谢。需要多少上下文?我主要是把
时间戳
放进去,然后把
时间戳
拿出来。i、 e.:
Timestamp start=DateTimeConverter.toUTC(appointment.getStartTime())其中
约会。getStartTime()
是一个
时间戳