首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Bootstrap Datetimepicker TypeError: intermediate value 修復方案

     編輯:Java 綜合教學

Bootstrap Datetimepicker TypeError: intermediate value 修復方案

問題背景

使用 smalot/bootstrap-datetimepicker 時控制台報錯:

TypeError: (intermediate value).toString(...).split(...)[1] is undefined
// 來源代碼
this.defaultTimeZone = (new Date()).toString().split("(")[1].slice(0, -1);

根因分析

代碼嘗試通過 Date.toString() 解析時區,但不同瀏覽器返回格式不一致:

  • Chrome/IE:"Wed May 25 2016 16:07:14 GMT+0800 (CST)" → 有括號,可解析
  • Firefox:"Wed May 25 2016 16:07:14 GMT+0800" → 無括號,split("(")[1] 為 undefined

修復方案

使用標準 API getTimezoneOffset() 獲取時區偏移(分鐘),轉換為小時:

// 原代碼
this.defaultTimeZone = (new Date()).toString().split("(")[1].slice(0, -1);

// 修正後
this.defaultTimeZone = 'GMT ' + (new Date()).getTimezoneOffset() / 60;

注意:getTimezoneOffset() 返回值為分鐘,正負號與直覺相反(UTC+8 返回 -480),如需標準格式可進一步處理。

額外修復:FontAwesome 檢測失敗

若專案使用 FontAwesome,插件檢測邏輯可能失效:

// 原代碼
this.fontAwesome = k.fontAwesome || this.element.data("font-awesome") || false;

// 修正
this.fontAwesome = true;

適用版本建議

  • Eonasdan/bootstrap-datetimepicker:功能最全,但依賴極多(Moment.js、jQuery、Bootstrap CSS/JS)
  • smalot/bootstrap-datetimepicker:輕量,依賴少,修復上述兩點後可正常使用

修復後插件在 Chrome、Firefox、IE 均正常工作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved