我想將字符串轉換爲日期格式。使用Javascript將字符串(30-jul-2016)轉換爲日期(2016-07-30)
我的字符串格式是30-Jul-2016並且想轉換成2016-07-30。只使用JavaScript。
我想將字符串轉換爲日期格式。使用Javascript將字符串(30-jul-2016)轉換爲日期(2016-07-30)
我的字符串格式是30-Jul-2016並且想轉換成2016-07-30。只使用JavaScript。
var d = new Date('30-Jul-2016'.split('-').join(' ')),
dFormated = d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2) + '-' + d.getDate();
console.log(dFormated);
如果沒有類似Moment的庫,最好的方法是保留一個數組來獲取數值(並不保證每個瀏覽器都會解析該日期),然後只分割字符串並解析它
var months = [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec'
];
function pad(x) {return x < 10 ? '0' + x : x}; // zero padding
var str = "30-Jul-2016";
var parts = str.split('-');
var date = new Date(parts[2], months.indexOf(parts[1]), parts[0]);
// now you can output whatever
var new_date = date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate());
document.body.innerHTML = new_date;
另一種方式:
function formatDate(string) {
var date = new Date(string),
dd = date.getDate(),
mm = date.getMonth() + 1,
yyyy = date.getFullYear();
dd = dd < 10 ? '0' + dd : dd;
mm = mm < 10 ? '0' + mm : mm;
return yyyy + '-' + mm + '-' + dd;
}
console.log(formatDate('30-Jul-2016')); // 2016-07-30
var date = new Date(string)返回無效日期 –
在你的情況下,它返回一個有效的Date對象。 「2016年7月30日星期六00:00:00 GMT + 0300(MSK) –
試試這個
var date = '30-Jul-2016';
date = date.split('-').join(' ');
var d = new Date(date);
alert(d.getFullYear() + '-'+(d.getMonth()+1) +'-'+ d.getDate());
console.log(d.getFullYear() + '-'+(d.getMonth()+1) +'-'+ d.getDate());
試試這個代碼
var date = '30-Jul-2016';
date = date.split('-').join(' ');
var d = new Date(date);
dd = d.getDate();
mm = d.getMonth() + 1;
yyyy = d.getFullYear();
dd = dd < 10 ? '0' + dd : dd;
mm = mm < 10 ? '0' + mm : mm;
alert(yyyy + '-'+mm +'-'+ dd);
爲了儘可能動態我建議實行第一道格拉斯Crockford的取代函數,並將其分配給字符串對象的原型(How can I do string interpolation in JavaScript?)。這裏是你如何做到這一點:
String.prototype.supplant = function (o) {
return this.replace(/{([^{}]*)}/g,
function (a, b) {
var r = o[b];
return typeof r === 'string' || typeof r === 'number' ? r : a;
}
);
};
之後,你就可以實現這樣的事情:
function changeFormat(from, to){
var months = [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec'
];
var date = new Date(from);
return to.supplant({
YYYY: date.getFullYear(),
MMM: months[date.getMonth()],
MM: date.getMonth()+1 > 9 ? date.getMonth()+1 : '0'+parseInt(date.getMonth()+1),
DD: date.getDate() > 9 ? date.getDate() : '0' + parseInt(date.getDate())
})
}
,這是它如何工作:
changeFormat("30-Jul-2016","{YYYY}-{MM}-{DD}") // 2016-07-30
例子:
String.prototype.supplant = function (o) {
return this.replace(/{([^{}]*)}/g,
function (a, b) {
var r = o[b];
return typeof r === 'string' || typeof r === 'number' ? r : a;
}
);
};
function changeFormat(from, to){
var months = [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec'
];
var date = new Date(from);
return to.supplant({
YYYY: date.getFullYear(),
MMM: months[date.getMonth()],
MM: date.getMonth()+1 > 9 ? date.getMonth()+1 : '0'+parseInt(date.getMonth()+1),
DD: date.getDate() > 9 ? date.getDate() : '0' + parseInt(date.getDate())
})
}
console.log(changeFormat("30-Jul-2016","{YYYY}-{MM}-{DD}"));
var d = new Date('30 -Jul-2016')返回無效日期 –
謝謝@KeyurShah ..已更新回答 –
是的,它編輯和添加拆分和加入後的作品。 –