如何转换字符串,如" 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;
非常感谢任何帮助。
答案 0 :(得分:1)
您似乎拥有"YYYYMMDD"
形式的字符串。要获得各个部分,您只需要提取子字符串。一种方法是使用正则表达式:
> "20150415".match(/(\d{4})(\d{2})(\d{2})/)
["20150415", "2015", "04", "15"]
然后,您可以将各个部分(年,月,日)传递给Date
构造函数。
但请注意,JavaScript没有内置支持格式化日期。为此你可能想要使用一个库。见Where can I find documentation on formatting a date in JavaScript?
答案 1 :(得分:0)
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
答案 2 :(得分:0)
这是一个日期格式化程序,它接受字符串'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 Developer Network上的JavaScript文档中阅读此内容:
如果输入字符串以“0”开头,则基数为八(八进制)或10(十进制)。究竟选择哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持此功能。 因此,在使用parseInt时始终指定基数。
答案 3 :(得分:0)
试试这个:
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"