2013-03-25 75 views
0

我在IE8和一些較舊的瀏覽器中遇到了日期對象的問題。在網站上我輸入隱藏,我保留日期,更改後的新日期應該在該領域。javascript日期對象使用輸入字符串創建

在我的機器,一切都很好,但在其他一些我得到NaN-NaN-NaN,這是我的代碼:

var date = new Date($('#curDate').val()); 
//date.setDate(date.getDate() - 7); 
var dateMsg = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate(); 
alert(dateMsg); 

當我運行此文件(PHP),在隱藏輸入我已經得到了週一的日期從本週2013-03-25。

此警報在Win XP IE8上返回我NaN-N..,並且在非常老的mac上,我重新調整了它與對象的問題。如何獲取日期值並將其轉換爲JavaScript中的對象?

+0

你輸入了什麼日期格式?大多數不被每個瀏覽器識別。 – Bergi 2013-03-25 16:13:46

+0

2013年3月25日 - YYYY-MM-DD – miszczu 2013-03-25 16:14:21

+0

[date.js](http://www.datejs.com)用日期解析處理大量的跨瀏覽器問題,btw .. – 2013-03-25 16:29:12

回答

1

問題與您連字符..

將您的連字符( ' - ')用斜槓( '/')

var dateStr=$('#curDate').val(); 
var a=dateStr.split(" "); 
var d=a[0].split("-"); 
var t=a[1].split(":"); 
var date = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]); 

var date=new Date(convertToSlash($('#curDate').val())); 

    function convertToSlash(string){ 
     var response = string.replace(/-/g,"/"); 
     return response; 
    } 
+0

不明智的建議恕我直言 - 轉換爲「斜線」格式不保證與語言環境無關的解析。 – Alnitak 2013-03-25 16:19:00

+0

@Alnitak:日期幾乎總是被解析的基於語言環境的。要以跨瀏覽器的方式解決這個問題,你需要使用'Date.UTC' – Bergi 2013-03-25 17:40:31

+0

nb:locales和TZ不是一回事。 – Alnitak 2013-03-25 19:27:53

2

千萬不要使用new Date(some_string) - 這是不可靠的,因爲它取決於用戶的區域設置。

打破串入其yy/mm/dd自己的組件,然後再調用new Date(y, m - 1, d)

+0

'Date'構造函數也使用本地時區。 – Bergi 2013-03-25 17:40:49

+0

@Bergi我不是在談論時區,我是在談論mm/dd/yy和dd/mm/yy – Alnitak 2013-03-25 19:22:11

+0

啊,好的。然而,OP使用YYYY-MM-DD格式 - 這是從來沒有YYYY-DD-MM :-) – Bergi 2013-03-25 19:23:53

0

您還可以使用新的Date(some_string)格式。這是可靠的。但是,日期字符串必須採用ISO格式,即yyyy/mm/dd。

相關問題