2016-07-27 52 views

回答

0

var d = new Date('30-Jul-2016'.split('-').join(' ')), 
 
    dFormated = d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2) + '-' + d.getDate(); 
 

 
console.log(dFormated);

+1

var d = new Date('30 -Jul-2016')返回無效日期 –

+0

謝謝@KeyurShah ..已更新回答 –

+1

是的,它編輯和添加拆分和加入後的作品。 –

0

如果沒有類似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;

0

另一種方式:

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 
+0

var date = new Date(string)返回無效日期 –

+0

在你的情況下,它返回一個有效的Date對象。 「2016年7月30日星期六00:00:00 GMT + 0300(MSK) –

0

試試這個

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());

0

試試這個代碼

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); 
1

爲了儘可能動態我建議實行第一道格拉斯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}"));