2012-10-18 131 views
4

我正在調試一個小的應用程序的一些功能,只能在Chrome中運行。問題出在一個日期選擇器,你選擇一個日期和時間,日期選擇器把它變成一個日期時間字符串。Javascript日期時間字符串到日期對象

無論如何,字符串看起來像這樣:2012-10-20 00:00

然而,現在使用它的JavaScript只是需要串並初始化這樣一個與它的對象:new Date('2012-10-20 00:00');

這導致在Firefox,IE瀏覽器無效的日期,可能所有的瀏覽器而Chrome。 我需要建議如何最好的將此日期字符串轉換爲JavaScript中的Date對象。我有jQuery啓用。

感謝您的聖人建議和更好的智慧。

回答

14

如果字符串格式始終爲你的狀態,然後分割字符串,並使用位,如:

var s = '2012-10-20 00:00'; 
var bits = s.split(/\D/); 
var date = new Date(bits[0], --bits[1], bits[2], bits[3], bits[4]); 
+0

是不是可以在javascript中使用parse方法? 'var m = Date.parse('2012-10-10 00:00'); d =新日期(m);'? – Ms01

+0

忽略我的評論,只是試了一下。感謝您的回答,美麗的代碼。 – Ms01

+1

ES5包含[日期時間字符串格式](http://ecma-international.org/ecma-262/5.1/#sec-15.9.1.15)['Date.parse'](http:// ecma-international .org/ecma-262/5.1 /#sec-15.9.4.2),但並非所有的瀏覽器都支持它,ECMA-262中沒有一個支持它。3.更安全的解決它。 – RobG

1

如果str = '2012-10-20 00:00'

new Date(str.split(' ')[0].split('-').join(',') + ',' + str.split(' ')[1]. 
split('-').join(',')) 

應該做的伎倆

-1

使用parseExact方法

var date = new Date.parseExact(dateString, "yyyy-mm-dd hh-mm"); 
+0

解析方法不起作用,因爲它與日期字符串上的格式相同。據我所知,parseExact來自Date.js。 – Ms01

+0

沒有傷害使用date.js @cubsink – Talha

+1

如果你只是將它用於這個單一的事情,無需在重要的應用程序上引入新的框架。但是,只要你從一開始就使用它,或者如果你真的需要它,沒有什麼壞處。 – Ms01

2

這只是簡化版本:

var newDate = new Date('2015-04-07 01:00:00'.split(' ')[0]); 
相關問題