2016-10-10 61 views
4

我想要這種格式的日期:'%Y-%m-%dT%H:%M:%S+0000'。我寫了一個函數,但仍然問自己是否沒有更好的方法來做到這一點。 這是我的函數:在javascript中格式化日期

function formatDate() { 
    var d = new Date(); 
    var year = d.getMonth() + 1; 
    var day = d.getDate(); 
    var month = d.getMonth() + 1; 
    var hour = d.getHours(); 
    var min = d.getMinutes(); 
    var sec = d.getSeconds(); 
    var date = d.getFullYear() + "-" + (month < 10 ? '0' + month : month) + "-" + 
     (day < 10 ? '0' + day : day) + 
     "T" + (hour < 10 ? '0' + hour : hour) + ":" + (min < 10 ? '0' + min : min) + ":" + (sec < 10 ? '0' + sec : sec) + "+0000"; 
    return date; 
} 

如何用更少的代碼做任何理想是什麼?

+6

我推薦使用類似於moment.js這樣的庫。 – ViRuSTriNiTy

+2

在這種情況下,我建議不要使用moment.js。你的解決方案雖然不是特別漂亮(日期格式化對代碼來說不好),但它要比導入輕量級日期庫要輕得多。 – gelliott181

+0

第3行不需要 –

回答

4

它可以在一行中完成。我製作了兩行,使其更簡單。結合線2和3

var d = new Date(); 
 
date = d.toISOString().toString(); 
 
var formattedDate = date.substring(0, date.lastIndexOf(".")) + "+0000"; 
 
console.log(formattedDate);

2

使用moment.js

moment().format('YYYY-MM-DDTh:mm:ss+0000') 

JSBIN

console.log(moment().format('YYYY-MM-DDTh:mm:ss+0000'))
<script src="https://cdn.jsdelivr.net/momentjs/2.14.1/moment-with-locales.min.js"></script>

1
var d = new Date(); 
var dateString = d.getUTCFullYear() +"-"+ (d.getUTCMonth()+1) +"-"+ d.getUTCDate() + " " + d.getUTCHours() + ":" + d.getUTCMinutes() + ":" + d.getUTCSeconds()+"+0000"; 

getUTCMonth返回0 - 11,所以要添加一個要轉換爲字符串之前。