Jax-RS JsonFormat日期未知39 [重复]

问题描述 投票:1回答:2

这个问题在这里已有答案:

film event.Java

    import java.util.Date;

    @AllArgsConstructor(access=AccessLevel.PUBLIC)
    public class FilmEvent {
    @Getter
    private String id;

    @Getter
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd,HH:mm", timezone="CET")
    private Date date;

    @Getter
    private String[] attributes;

    @Getter
    private boolean soldOut;

}

我的记录

FilmEvent event = new FilmEvent("334",  new Date(2018,1,1,12,44), null, false);

我在firefox中的结果

date:"3918-02-01,12:44"

问题是,为什么3918-02-01?以及如何解决它;

java rest maven date jax-rs
2个回答
1
投票

根据JavaDoc,这个Date构造函数将年份论证作为year-1900,因此你的第一年将被1900添加。

JavaDoc的:

year - the year minus 1900.
month - the month between 0-11.
date - the day of the month between 1-31.
hrs - the hours between 0-23.
min - the minutes between 0-59.

这也是很久以前的弃用。我建议使用LocalDateTimehere


0
投票

Date(int year,int month,int date,int hrs,int min)已过时。从JDK版本1.1开始,由Calendar.set(年份+ 1900,月份,日期,小时,分钟)或GregorianCalendar(年份+ 1900,月份,日期,小时,分钟)替换。

你可以使用:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.MINUTE, 12);
cal.set(Calendar.SECOND, 44);
Date date = cal.getTime();

要么

Calendar cal = Calendar.getInstance();
cal.set(2018,1,1,12,44);
Date date = cal.getTime();
© www.soinside.com 2019 - 2024. All rights reserved.