我试图使用JS将日期对象转换为YYYYMMDD格式的字符串。有没有比连接Date.getYear(), Date.getMonth()和Date.getDay()更简单的方法?


当前回答

如果你不需要一个纯JS的解决方案,你可以使用jQuery UI来做这样的工作:

$.datepicker.formatDate('yymmdd', new Date());

我通常不喜欢导入太多的库。但是jQuery UI非常有用,你可能会在项目的其他地方用到它。

更多示例请访问http://api.jqueryui.com/datepicker/

其他回答

// utc / gmt 0 文档。write('UTC/GMT 0: ' + (new Date()). toisostring()。片(0,19)。替换(/ [^ 0 - 9]/ g, " "));/ / 20150812013509 //客户端本地时间 文档。write('<br/>本地时间:' + (new Date(Date.now()-(new Date()). gettimezoneoffset () * 60000)). toisostring()。片(0,19)。替换(/ [^ 0 - 9]/ g, " "));/ / 20150812113509

这篇文章帮助我写了这个助手,所以我分享它以防有人 正在寻找这个解决方案,它支持yyyy, mm, dd的所有变化

Date.prototype.formattedDate = function (pattern) {
    formattedDate = pattern.replace('yyyy', this.getFullYear().toString());
    var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based
    mm = mm.length > 1 ? mm : '0' + mm;
    formattedDate = formattedDate.replace('mm', mm);
    var dd = this.getDate().toString();
    dd = dd.length > 1 ? dd : '0' + dd;
    formattedDate = formattedDate.replace('dd', dd);
    return formattedDate;
};

d = new Date();
pattern = 'yyyymmdd';  // 20150813
d.formattedDate(pattern);

pattern = 'yyyy-mm-dd';
d.formattedDate(pattern); // 2015-08-13

这里很多答案都使用toisostring函数。这个函数在输出之前将时间转换为zulu时间,这可能会导致问题。

function datestring(time) {
    return new Date(time.getTime() - time.getTimezoneOffset()*60000).toISOString().slice(0,10).replace(/-/g,"")
}

mydate = new Date("2018-05-03")
console.log(datestring(mydate))

datestring函数修复了时区问题,或者更好的是,你可以通过使用zulu时间来避免整个问题:

mydate = new Date("2018-05-03Z")
// mydate = new Date(Date.UTC(2018,5,3))
console.log(mydate.toISOString().slice(0,10).replace(/-/g,""))
const date = new Date()

console.log(date.toISOString().split('T')[0]) // 2022-12-27

这个家伙这里=> http://blog.stevenlevithan.com/archives/date-time-format写了一个格式()函数Javascript的日期对象,所以它可以使用熟悉的文字格式。

如果你需要在应用程序的Javascript中使用完整的日期格式,请使用它。否则,如果你想做的是一次性的,那么连接getYear(), getMonth(), getDay()可能是最简单的。