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

IE7 不支持 new Date('2012-9-20'):字符串轉毫秒數兼容性寫法

     編輯:程式設計綜合問答

問題

IE7 不支持 `new Date('2012-9-20')`(ISO 8601 格式),報錯或返回 `Invalid Date`。

解決方案:替換分隔符為 `/`

var str = '2012-9-20';
str = str.replace(/-/g, '/'); // 關鍵:統一為斜杠分隔
var date = new Date(str);
var milliseconds = date.getTime(); // 毫秒數
console.log(milliseconds);

原理

  • ECMAScript 5 規範要求 `Date.parse` 支持 `YYYY/MM/DD` 格式,但**不強制支持連字符 `-` 格式**。
  • IE7 僅實現了斜杠格式解析,將 `-` 替換為 `/` 即可兼容。

更健壯的通用解析函數

function parseDateSafe(str) {
    // 支持 YYYY-MM-DD、YYYY/MM/DD、YYYY.MM.DD 等常見格式
    str = str.replace(/[.\-]/g, '/');
    var d = new Date(str);
    return isNaN(d.getTime()) ? null : d;
}

// 使用
var d = parseDateSafe('2012-9-20');
if (d) console.log(d.getTime());

現代項目建議

  • 引入 Moment.js / date-fns / Luxon / Temporal (提案) 統一日期處理,避免瀏覽器差異坑。
  • 後端傳輸統一使用 **ISO 8601 字符串** (`2012-09-20T00:00:00Z`) 或 **毫秒時間戳** (`1348099200000`),前端直接 `new Date(timestamp)` 最可靠。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved