時間戳轉 Date 字串出現誤差
阿新 • • 發佈:2019-02-03
1. 問題描述:
前臺一個日期選擇元件,提交的資料格式為“1991-05-10”,後臺使用 SimpleDateFormat 進行轉換,獲取到時間戳,存入資料庫,資料庫欄位為 bigint 型別,儲存後,日期回顯,顯示為 “1991-05-09”,出現一天的誤差,但不是所有日期都存在誤差。
前臺獲取到時間戳,轉換後呼叫 toLocaleDateString 回顯資料。
2. 解決方法:
後臺,在使用 SimpleDateFormat 時,設定時區,如下:
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC" ));
3. 相關程式碼如下:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date birthdayDate = null;
try {
birthdayDate = simpleDateFormat.parse(birthday);
long time = birthdayDate.getTime();
long l = time / 1000;
member.setBirthday(l);
} catch (ParseException e) {
LOGGER.error("出生日期轉換異常", e);
}
<script>
// 變換日期
Date.prototype.toLocaleDateString = function () {
return this.getFullYear() + "-" + (this.getMonth() + 1) + "-" + this.getDate();
};
var date_before = $("#birthday_source").val();
var unixTimestamp = new Date(date_before * 1000);
var new_date = unixTimestamp.toLocaleDateString();
$("#birthday_input").val(new_date);
</script>
<input id="birthday_input" name="birthday" value="" onchange="save()" style="text-align: right"/>
個人微信公眾號,追尋自由,分享生活!