1. 程式人生 > >時間戳轉 Date 字串出現誤差

時間戳轉 Date 字串出現誤差

  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"/>

個人微信公眾號,追尋自由,分享生活!
這裡寫圖片描述