我有一个简单的应用程序与休息с应用程序在docker中运行。
@RestController
@Slf4j
public class TimeTestController {
@PostMapping("/time-test")
public @ResponseBody TimeTest timeTest (@RequestBody TimeTest timeTest) {
log.info("request {}", timeTest);
TimeTest time = new TimeTest();
time.setDate(timeTest.getDate());
return time;
}
}
像这样简单的课程
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TimeTest {
private String id;
private Date date;
}
我把带时区的日期传给管制员 2020-12-07T19:54:25.860+0100
. 但是,在该方法中,日期以时区utc打印 2020-12-07T18:54:25.860+0000
. 它还返回时区utc,但我需要返回相同的时区。我怎样才能解决这个问题?
2条答案
按热度按时间rjjhvcjd1#
jvm的时区似乎是utc。基于
java.util.Date
在大多数情况下,它们在jvm的时区中显示日期和时间。我建议您使用现代日期时间api。因为你的约会时间串,2020-12-07T19:54:25.860+0100
有区域偏移信息,最适合使用的类是OffsetDateTime
.然后在课堂上,
TimeTest
```@Data
@AllArgsConstructor
@NoArgsConstructor
public class TimeTest {
private String id;
private OffsetDateTime odt;
}
af7jpaap2#
java 的
Date
a) 不支持时区&b)如果您使用的是java8+,则不应使用。我建议使用OffsetDateTime
换成这里。假设您使用的是jackson w/spring boot,除了
web
确保包括jackson-datatype-jsr310
作为一种依赖。当boot在类路径上检测到它时,它将自动配置jackson的JavaTimeModule
,它支持新的java8日期/时间api。祝你好运!