2011-12-24 160 views
2

我試圖使用Javascript將「1983-24-12」轉換爲1983年12月24日。在JavaScript中將yyyy-mm-dd轉換爲其他日期格式

我們是否有任何現成的Javascript函數使得這個轉換和在Java中的simpledateformat一樣?

我試圖避免在陣列中花費數月然後做操作。

我的代碼如下。

//For Date Format 
    months = ["", "January", "February", "March", "April", "May", "June",   "July", "August", "September", "October", "November", "December"];  
    dob = responseObj.data.personDetail.birthDate.split('-'); 
    month = months[dob[1]]; 
    responseObj.data.personDetail.birthDate = month +" "+dob[2] +","+dob[0]; 

請幫忙。

+0

有一個* Date.prototype.toLocaleString *方法,但你首先必須將字符串轉換爲日期(不難,但需要2或3行代碼),然後調用* toLocaleString * 。然後該方法依賴於實現,因此您可以獲得瀏覽器返回的任何內容,這在幾乎每個瀏覽器中都是不同的。許多人也會忽略本地設置,因此即使系統設置爲白天,黑夜,年份,也要返回以美國爲中心的月,日,年。所以你正在使用的方法可能已經很好了。 – RobG 2011-12-24 05:06:54

回答

2

編輯:既然你提到你正在使用煎茶,您可以使用Ext.Date添加先進的日期格式和解析:

一組常用的靜態方法來處理日期請注意,如果Ext.Date是需要和加載的,爲方便起見,它會將所有方法/屬性複製到這個對象。

你可以在這裏找到更多的信息:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Date

這兩種方法,你可能會發現有用的parseformat


另外,JQuery用戶界面的DatePicker部件實現了一個非常強大的日期解析器和格式化,它可以用在你自己的代碼中,像這樣:

var parsedDate = $.DatePicker.parseDate("yy-m-d", "1983-24-12"); 
var outputString = $.DatePicker.formatDate("MM d, yy", parsedDate); 
// outputString = "December 24, 1983" 

這裏的相關功能是parseDateformatDate

雖然有一個問題,要使用它,您必須在代碼中包含JQuery和JQuery UI作爲腳本,這可能對您需要的有點過分,而其他答案可能適合您的需要更好。

+0

我正在與Sencha :) – Gendaful 2011-12-24 01:24:10

+0

@ HPP - 我已經編輯了我的答案,我已經添加了一點關於使用Sencha Ext JS,可能適合你:-) – 2011-12-24 01:31:30

+0

我已經使用birthDate = date.dateFormat(「F d,Y「); // Sencha DateObject。謝謝。 – Gendaful 2011-12-27 19:34:14

2

這可能幫助:Date Format Conversion

+0

我正在避免嘗試將任何庫放入我的代碼中,這將不必要地增加我的移動網站的大小。我試着如果sencha提供任何幫助.. – Gendaful 2011-12-24 01:12:55

+0

然後你可以顯示你的一些代碼...你有什麼嘗試..? – 2011-12-24 01:14:44

+0

嗨Sudhir。我已經添加了上面的代碼。謝謝 – Gendaful 2011-12-24 01:19:11

2

如果我理解你的權利,你想重新格式化其中快速谷歌搜索提出了這個它看起來像你想要什麼你的約會。

7

如果你不想使用一個庫,爲什麼不只是分割日期字符串和調整自己的日期?

var str_date = "1983-24-12", 
    arr_date = str_date.split('-'), 
    months = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 

alert(months[arr_date[2]] + ' ' + arr_date[1] + ', ' + arr_date[0]); 

演示:http://jsfiddle.net/9xeBZ/

JavaScript有Date()對象:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

的問題是,JavaScript的Date()對象將不會返回一個月的字符串表示。所以在某些時候你必須自己創建這個邏輯。此外,您發佈的格式(「1983-24-12」)與Date()對象解析的格式無效。

+0

嗨賈斯珀,我嘗試過,但試圖避免從陣列的幫助。我們有什麼簡單的格式化函數可以幫助我們在這種情況下?我正在製作一個Sencha框架的移動網站 – Gendaful 2011-12-24 01:23:01

+0

@HPK我在最後一段更新了我的答案。另外這裏是一個鏈接到一個SO答案,顯示如何通過Date.prototype添加這個功能到你的網站:http://stackoverflow.com/a/1643506/752738 – Jasper 2011-12-24 01:25:45

+1

順便說一句,* Date.prototype.toLocaleString *是依賴於實現,一些瀏覽器確實返回完整的月份名稱(例如Safari),而另一些則不會。 – RobG 2011-12-24 05:11:48

相關問題