我有一個日期格式這樣2011-07-29T08:18:39獲得最新的JavaScript毫秒
我想轉換此日期前奏毫秒 我嘗試
var myDate = '2011-07-29T08:18:39';
new Date(myDate.replace("T"," ")).getTime()
但顯示我的NaN 。 請幫忙 謝謝
我有一個日期格式這樣2011-07-29T08:18:39獲得最新的JavaScript毫秒
我想轉換此日期前奏毫秒 我嘗試
var myDate = '2011-07-29T08:18:39';
new Date(myDate.replace("T"," ")).getTime()
但顯示我的NaN 。 請幫忙 謝謝
T.J.是對的;我的原始解決方案在IE9和Safari中失敗。這將做到這一點,並在所有主流瀏覽器中運行。
var myDate = '2011-07-29T08:18:39';
function parseDate(dateString){
var time = Date.parse(dateString);
if(!time){
time = Date.parse(dateString.replace("T"," "));
if(!time){
bound = dateString.indexOf('T');
var dateData = dateString.slice(0, bound).split('-');
var timeData = dateString.slice(bound+1, -1).split(':');
time = Date.UTC(dateData[0],dateData[1]-1,dateData[2],timeData[0],timeData[1],timeData[2]);
}
}
return time;
}
var milliseconds = parseDate(myDate);
在你的第一個例子中,你爲什麼要更換一個不存在的「T」?這是一個錯字嗎? –
是的,這是一個錯字,我的壞....固定。 – AWinter
你也不能依賴'Date.parse',因爲你不能依賴'new Date(string)'的原因。 –
問題是沒有得到毫秒(你是這樣做的),它得到的日期。
很多瀏覽器仍然不支持該字符串格式,包括IE的所有發佈版本,甚至IE9。這是因爲ISO-8601格式在大約一年半前才被添加到第5版的規格中;在此之前,之前的規範只是說他們必須接受任何Date#toString
和Date#toUTCString
吐出,而那些被定義爲「依賴於實現」的字符串。例如,你不能依賴他們的格式。完全一樣。
直到第5版規範的更改得到更廣泛的實施(然後幾年時間直到舊的瀏覽器仍未被大部分用戶使用),您必須自己解析格式,或者使用類似DateJS的東西來爲你做。
DateJS真的很涼爽,但如果你不想使用它,解析該格式是死很容易提供源總是給你正是格式(live copy):
var myDate, parts, date, time, dt, ms;
myDate = '2011-07-29T08:18:39';
parts = myDate.split(/[T ]/); // Split on `T` or a space to get date and time
date = parts[0];
time = parts[1];
dt = new Date();
parts = date.split(/[-\/]/); // Split date on - or/
dt.setFullYear(parseInt(parts[0], 10));
dt.setMonth(parseInt(parts[1], 10) - 1); // Months start at 0 in JS
dt.setDate(parseInt(parts[2], 10));
parts = time.split(/:/); // Split time on :
dt.setHours(parseInt(parts[0], 10));
dt.setMinutes(parseInt(parts[1], 10));
dt.setSeconds(parseInt(parts[2], 10));
ms = dt.getTime(); // or ms = +dt; if you want to be l33t about it
使用正招 的javascript:警報(。(新的日期( '2011/07/29 8點18分39秒'))的getTime());
new Date('2011/07/29T08:18:39'.replace("T"," ")).getTime()
給出1311923919000.這適用於Safari。
你不能依賴這個。有些瀏覽器會這樣做,有些則不會。 –
那麼人們不應該詢問新功能?或者至少有一個人不應該回答有關新功能的問題! – QuentinUK
你建議他將'-'字符改爲'/'。如果它不適用於破折號(由新標準定義),則不適用於斜槓(* not *由新標準定義)。 –
請注意,您接受的解決方案不適用於任何已發佈的IE版本。 –
他現在更新它,所以它的工作。 –