2012-01-06 23 views
0

我有MM/DD/YYYY格式的日期。我需要然後轉換成,使用JavaScript。 (更確切的例子:2012年5月25日 - >「2012年5月25日」)我知道如何轉換日期,但問題是:將數字日期轉換爲文本的效率

是否有更高效的方式,無論是使用javascript函數或者別的什麼東西,將MM/DD/YYYY轉換爲上面的格式,而不是使用switch語句和連接字符串?

+0

date.js庫(任何東西,非常靈活)。更容易,但速度可能更低。 – 2012-01-06 21:06:35

回答

0

通過訪問數組,你可以做到這一點

var monthArray = ['January', 'February', ... , 'December']; 


var date = "05/25/2012"; 

var dateParts = date.split('/'); 

var convertedDate = monthArray[parseInt(dateParts[0], 10)] + " " + dateParts[1] + ", " + dateParts[2]; 
+0

比switch語句更高效。如果我沒有找到庫函數來做這件事,我會使用它。 – Proxy404 2012-01-06 21:14:19

+0

只有一個編輯: var convertedDate = monthArray [parseInt(dateParts [0],10)-1] + ... 沒有'-1'它會給出一個月後。否則這個工作。 – Proxy404 2012-01-06 22:03:02

0

奇怪的是,我剛剛在半小時前發佈了related question。以下是我正在使用的內容,但它也解析了一段時間。

// Date m/d/Y Time h:m a 
function parseDate(date,time) { 

date = date.split("/"); 
time = time.split(" "); 
hm = time[0].split(':'); 
if (parseInt(hm[0],10) == 12) { 
    hm[0] = 0; 
} 
if (time[1] == 'pm') { 
    hm[0] = parseInt(hm[0],10) + 12; 
} else { 
    hm[0] = parseInt(hm[0],10); 
} 
return new Date(
    parseInt(date[2],10), 
    parseInt(date[0],10)-1, 
    parseInt(date[1],10), 
    hm[0], 
    parseInt(hm[1],10) 
); 

} 

所以,你可以很容易地取出time線,並具有以下......

function parseDate(date) { 

    date = date.split("/"); 

    return new Date(
    parseInt(date[2],10), 
    parseInt(date[0],10)-1, 
    parseInt(date[1],10) 
); 

} 
+0

*在使用'parseInt(string [,radix])'函數時總是*添加'radix'參數,因爲所有以'0'開頭的字符串都將被解釋爲八進制(除非它們以'0x'開頭,那麼它們會被解釋爲十六進制)。參考:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt – matsev 2012-01-06 21:10:24

+0

不錯的代碼,類似於我已經。但我正在尋找一些東西來給我一個像「2012年3月20日」這樣的字符串的實際日期。如果有一個函數,而不是在月份的數字上運行switch語句,我想使用內置函數。 – Proxy404 2012-01-06 21:12:11

+0

@matsev我從現在開始肯定會。提交後我立即回去編輯它。我其實剛剛瞭解了這[今天](http://stackoverflow.com/questions/8763396/javascript-parseint-with-leading-zeros)。 – 2012-01-06 21:14:04

1

您可能會發現parseDateformatDate功能jQuery UIDatepicker吸引力,例如

var date = $.datepicker.parseDate('mm/dd/yy', '05/25/2012'); 
$.datepicker.formatDate('MM d yy', date); 

這一切都取決於你如何定義 '高效':

  • 代碼密度? - 這是高效的imho。
  • 速度和性能? - 沒有線索。
  • 本地化? - 它是supported,例如$(selector).datepicker($.datepicker.regional['fr']); *