JavaScript中的日期格式化

6

我希望日期格式为:'%Y-%m-%dT%H:%M:%S+0000'。我已经编写了一个函数,但仍在思考是否有更好的方法来实现。

这是我的函数:

 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
第三行不需要。 - Alex K.
@ViRuSTriNiTy moment.js 经过压缩和gzip处理后只有20kb。 - Paolo
3个回答

5

It can be done in one line. I made two lines to make it simpler. Combine line 2 and 3.

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


1
使用 moment.js
moment().format('YYYY-MM-DDTh:mm:ss+0000')

{{link1: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,因此在转换为字符串之前需要加1。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接