year
値のみをデータベースに保存して取得します。日付を保存する
この私のドメインである(POJO
)
@Entity
public class Publisher {
public Publisher(..., Date establishDate) {
//assign other variables
this.setEstablishDate(establishDate);
}
@NotNull
private Date establishDate;
...
}
そして、ここでは私のDTOである:ここでは
@NotNull
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy")
private Long establish_date;
、私は新しい出版社を作成しています:
new Publisher(..., new Date(this.establish_date));
を私が送っjsonの値が1370
の場合はestablish_date
(新規パブリッシャの場合)ですが、Daそれは次のように表示されます:1970-01-01 03:30:01
なぜですか?
Publisher
を取得すると、establish_date
が1000
と表示されます。
どうしたのですか?
年だけ気になる人は、なぜ「日付」フィールドを使っているのですか?なぜ 'int'を使わないのですか? 'new Date(1370)'は、Unixエポック後の1370ミリ秒の値、つまり1970-01-01T00:00:01.370Zを作成することに注意してください。 (あなたのシステムのタイムゾーンがどこかに適用されているように見えます...)私の推測は、それはあなたが期待したものではないということです。 'establish_date'を取得すると、サブ秒の情報が切り捨てられていることがわかります。これは実現可能です。さて、あなたは1370が何を意味すると思いましたか? –
@JonSkeet「1370」は、イラン国民の年の法的価値です。 –
しかし、それは 'Date(long)'コンストラクタがしないものです。基本的に、あなたは 'Date'を全く使ってはいけないとはっきりしていませんが、確かにUnixの時代から何ミリ秒も待っているコンストラクタの引数として年を表すための値を渡すべきではありません。 –