我有MM/DD/YYYY格式的日期。我需要然後轉換成,使用JavaScript。 (更確切的例子:2012年5月25日 - >「2012年5月25日」)我知道如何轉換日期,但問題是:將數字日期轉換爲文本的效率
是否有更高效的方式,無論是使用javascript函數或者別的什麼東西,將MM/DD/YYYY轉換爲上面的格式,而不是使用switch語句和連接字符串?
我有MM/DD/YYYY格式的日期。我需要然後轉換成,使用JavaScript。 (更確切的例子:2012年5月25日 - >「2012年5月25日」)我知道如何轉換日期,但問題是:將數字日期轉換爲文本的效率
是否有更高效的方式,無論是使用javascript函數或者別的什麼東西,將MM/DD/YYYY轉換爲上面的格式,而不是使用switch語句和連接字符串?
通過訪問數組,你可以做到這一點
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];
奇怪的是,我剛剛在半小時前發佈了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)
);
}
*在使用'parseInt(string [,radix])'函數時總是*添加'radix'參數,因爲所有以'0'開頭的字符串都將被解釋爲八進制(除非它們以'0x'開頭,那麼它們會被解釋爲十六進制)。參考:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt – matsev 2012-01-06 21:10:24
不錯的代碼,類似於我已經。但我正在尋找一些東西來給我一個像「2012年3月20日」這樣的字符串的實際日期。如果有一個函數,而不是在月份的數字上運行switch語句,我想使用內置函數。 – Proxy404 2012-01-06 21:12:11
@matsev我從現在開始肯定會。提交後我立即回去編輯它。我其實剛剛瞭解了這[今天](http://stackoverflow.com/questions/8763396/javascript-parseint-with-leading-zeros)。 – 2012-01-06 21:14:04
您可能會發現parseDate和formatDate功能jQuery UIDatepicker吸引力,例如
var date = $.datepicker.parseDate('mm/dd/yy', '05/25/2012');
$.datepicker.formatDate('MM d yy', date);
這一切都取決於你如何定義 '高效':
$(selector).datepicker($.datepicker.regional['fr']);
*
date.js庫(任何東西,非常靈活)。更容易,但速度可能更低。 – 2012-01-06 21:06:35