[英]Javascript convert string to date
如何將類似“ 20150415”的字符串轉換為格式為“ 2015年4月15日”的日期? 我已經閱讀了幾個示例,但是它們都包含用“-”或“ /”進行的拆分,但是這些不適用於我的情況。
這是我當前的代碼:
var d = parseInt(document.getElementById('date').value);
d = new Date(d[4], d[2] - 1, d[2]);
document.getElementById('date').value = d;
任何幫助將非常感激。
看來您有一個格式為"YYYYMMDD"
的字符串 。 要獲取各個部分,只需提取子字符串。 一種方法是使用正則表達式:
> "20150415".match(/(\d{4})(\d{2})(\d{2})/)
["20150415", "2015", "04", "15"]
然后,您可以將各個部分(年,月,日)傳遞給Date
構造函數。
但是,請注意,JavaScript不支持格式化日期。 為此,您可能要使用一個庫。 請參閱在哪里可以找到有關在JavaScript中格式化日期的文檔?
盡管@“ Felix Kling”的解決方案更好,但我提出了一個簡單的解決方案:
var d = "20150415";
//Extract 4 first letters and convert to integer, similarly with month and day
var year = parseInt(d.substr(0,4));
//subtract one since the index of the months begin in zero (january=0)
var month = parseInt(d.substr(4,2))-1;
var day = parseInt(d.substr(6,2));
d = new Date(year, month, day); // d store expected result
這是一個日期格式化程序,它使用字符串'20150415'
並返回字符串'April 4, 2015'
'20150415'
'April 4, 2015'
。 您可以通過修改DateFormat.toLong
的最后一行來調整日期格式。
var DateFormat = {
months: ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'],
toLong: function toLongDate(s) { // s is a string like '20150415'
var year = parseInt(s.substring(0, 4), 10),
month = DateFormat.months[parseInt(s.substring(4, 6), 10) - 1],
day = parseInt(s.substring(6), 10);
return month + ' ' + day + ', ' + year;
}
};
// A small test.
alert(DateFormat.toLong('20150415'));
請注意,我將第二個參數傳遞給parseInt
以指示該字符串表示的數字以10為底。如果您未指定以10為底,則可以將數字0開頭的字符串解析為以8為底。
您可以在Mozilla開發人員網絡上的JavaScript文檔中閱讀有關此內容的信息 :
如果輸入字符串以“ 0”開頭,則基數為8(八進制)或10(十進制)。 選擇哪個基數取決於實現。 ECMAScript 5指定使用10(十進制),但並非所有瀏覽器都支持。 因此,在使用parseInt時始終指定一個基數。
嘗試這個:
var months = ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'];
var fmt = function(str) {
var arr = str.match(/^(\d{4})(\d{2})(\d{2})$/);
arr.splice(0, 1);
arr[1] = months[+(arr[1]) - 1];
return arr.join(", ");
};
alert(fmt('20150412'));//"2015, April, 12"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.