Java Script 分析 Iso 8601 日期模式至 Date 物件

我在「Parsing W3C’s ISO 8601 Date/Times in JavaScript」看到如下的程式碼,這段主要的功能把「2004-12-21 23:11:00」這個字串,拆解回去 java script 的 Date 物件。通常在 Mysql 裡存的資料顯示出來都是這種格式,如果 java script 收到這種格式的時候,除了自已用 substring 分析之外,下面是使用 regexp 作分析的方法。

[code lang=“javascript”] Date.prototype.setISO8601 = function (string) { var regexp = “([0-9]{4})(-([0-9]{2})(-([0-9]{2})” + “( ([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?” + “( |(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?”; var d = string.match(new RegExp(regexp)); var offset = 0; var date = new Date(d[1], 0, 1); if (d[3]) { date.setMonth(d[3] - 1); } if (d[5]) { date.setDate(d[5]); } if (d[7]) { date.setHours(d[7]); } if (d[8]) { date.setMinutes(d[8]); } if (d[10]) { date.setSeconds(d[10]); } if (d[12]) { date.setMilliseconds(Number(“0.” + d[12]) * 1000); } if (d[14]) { offset = (Number(d[16]) * 60) + Number(d[17]); offset *= ((d[15] == ‘-’) ? 1 : -1); } offset -= date.getTimezoneOffset(); time = (Number(date) + (offset * 60 * 1000)); this.setTime(Number(time)); } [/code]

我這個有作一些修改,所以其實已經不是標準的格式了。只是為了分析 php 的日期部分比較方便而已。