天天看點

關于前後端日期格式化的問題

僅是個人總結:

由于之前開發項目,總是發現日期格式化以後要麼多8個小時,要麼少8個小時,是以總結如下:

目前遇到前端預設時區為GMT,與東八區相差八個小時。

前端 ——> 後端代碼(系統時區) ——> 入資料庫(GMT+8)

1、不設定時區@JsonFormat(pattern = “yyyy-MM-dd”)

2000-01-01 00:00:00(GMT) ——> 2000-01-01 00:00:00(GMT) ——> 2000-01-01 00:08:00(多8小時)

2000-01-01 00:08:00(GMT+8)

2、設定時區@JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8”)

2000-01-01 00:00:00(GMT+8) ——> 1999-12-31 16:00:00(GMT) ——> 2000-01-01 00:00:00 (不變)

2000-01-01 00:00:00(GMT+8)

相同路徑,如果從資料庫到前端資料變化相同。

可見:String ——>Date 設定timezone = "GMT+8"會少八個小時

Date ——>String 設定timezone = "GMT+8"會多八個小時

多少都是相對于系統時區為 “GMT+8”;

日期格式化幾種思路:

1、 @JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8”)

public void setCreateTimeStart(Date createTimeStart) {

if (createTimeStart != null) {

Calendar calendar = Calendar.getInstance();

calendar.setTime(createTimeStart);

calendar.set(Calendar.HOUR_OF_DAY, 0);

calendar.set(Calendar.MINUTE, 0);

calendar.set(Calendar.SECOND, 0);

calendar.set(Calendar.MILLISECOND, 0);

this.createTimeStart = calendar.getTime();

}

}

2、SimpleDateFormat format = new SimpleDateFormat(“yyyy年MM月dd日”);

format.setTimeZone(TimeZone.getTimeZone(“GMT+8”));

3、mybatis中格式化查詢條件,忽略時分秒,date_format(fp.gmt_create,’%Y-%m-%d’) >= date_format(#{startDate},’%Y-%m-%d’)

繼續閱讀