spring postmethod从utc返回日期

yhxst69z  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(319)

我有一个简单的应用程序与休息с应用程序在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,但我需要返回相同的时区。我怎样才能解决这个问题?

rjjhvcjd

rjjhvcjd1#

jvm的时区似乎是utc。基于 java.util.Date 在大多数情况下,它们在jvm的时区中显示日期和时间。我建议您使用现代日期时间api。因为你的约会时间串, 2020-12-07T19:54:25.860+0100 有区域偏移信息,最适合使用的类是 OffsetDateTime .

@RestController
@Slf4j
public class TimeTestController {
    @PostMapping("/time-test")
    public @ResponseBody TimeTest timeTest (@RequestBody TimeTest timeTest) {
        log.info("request {}",  timeTest);
        TimeTest time = new TimeTest();
        time.setOdt(timeTest.getDate());// Change timeTest.getDate() to return OffsetDateTime
        return time;
    }
}

然后在课堂上, TimeTest ```
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TimeTest {
private String id;
private OffsetDateTime odt;
}

在trail:date-time了解有关现代日期时间api的更多信息。
af7jpaap

af7jpaap2#

java 的 Date a) 不支持时区&b)如果您使用的是java8+,则不应使用。我建议使用 OffsetDateTime 换成这里。
假设您使用的是jackson w/spring boot,除了 web 确保包括 jackson-datatype-jsr310 作为一种依赖。当boot在类路径上检测到它时,它将自动配置jackson的 JavaTimeModule ,它支持新的java8日期/时间api。
祝你好运!

相关问题