2014-02-24 90 views
9

我將簡單的dateString轉換爲Date對象。以下代碼完美適用於除Firefox之外的所有瀏覽器。將日期字符串轉換爲日期對象在Firefox中時出錯

var dateString = "02-24-2014 09:22:21 AM"; 

var dateObject = new Date(dateString); 

console.log(dateObject.toDateString()); 

Firefox中的Firebug控制檯說Invalid Date。我在這裏做錯了什麼?

我也試着用\代替-,但它沒有幫助。

有沒有可能做到這一點,而不使用任何庫?

+0

爲什麼downvote? @Daksh:這實際上是可能的,我在這裏工作:http://jsfiddle.net/rdesai/cTcNK/4/ –

+0

順便說一下,我沒有投票,但它是我給出的鏈接的可能重複,它有同樣的問題,它也有一個答案 –

+0

請在下面找到我的答案。它適用於包括Firefox在內的所有瀏覽器。 –

回答

51

使用正則表達式替換的-所有出現的/,然後將字符串轉換爲Date目的。

var str = '02-24-2014 09:22:21 AM'; 
 

 
str = str.replace(/-/g,'/'); // replaces all occurances of "-" with "/" 
 

 
var dateObject = new Date(str); 
 

 
console.log(dateObject.toDateString());

+1

非常感謝。我花了數小時才找到了我遇到的問題的答案。隨着大量的谷歌搜索和搜索這裏,終於解決:)聲譽++ – cwiggo

+1

這是一個救生員 – zamil

+0

我很高興它的幫助。 –

0

我會建議你使用,

http://momentjs.com/ 

moment.js jQuery的api.It適用於所有的browers。 有很多方法可以完成相同的任務。但最簡單的方法是添加moment.js。

var dateString=moment('date as string').toDate(); 

http://jsfiddle.net/cTcNK/5/

+2

這將是我的最後一招。 –

+0

是的。 。有很多選擇。 – govinda

0

我建議你使用ISO8601(http://en.wikipedia.org/wiki/ISO_8601)格式:YYYY-MM-DD或YYYY-MM-DDTHH:MM:SS。

所以:new Date('2014-02-24T09:22:21')

如果字符串是固定的......然後把它分解和使用日期構造像

new Date('2014', '02' - 1, '24', '09', '22', '21') 
+0

不,格式是固定的,就像問題一樣。 –

+0

檢查更新後的答案。 – Alberto

4

嘗試:var dateString = "02/24/2014 09:22:21 AM"

DD-MM-yyyy是不是一個標準日期格式在EcmaScript中。有些瀏覽器實現它,有些則不。

您嘗試用baskslashes替換連字符,但您需要用斜槓替換它們。

如果用連字符日期使用replace方法和正則表達式來從你的服務器或東西,你可以替換它們:

var dateString = "02-24-2014 09:22:21 AM"; 
dateString = dateString.replace(/-/g, '/'); 
3

請試試這個:

VAR dateString = 「2014年2月24日上午09時22分21秒」;

var dateObject = new Date();

dateObject.toDateString(dateString);

+0

我認爲這是一個非常乾淨的答案。 +1 –

+0

它不在ie中工作 –

相關問題