为什么不是';javascript中是否有格式化日期对象的标准方法?

为什么不是';javascript中是否有格式化日期对象的标准方法?,javascript,date,Javascript,Date,我有一个javascript日期对象,并希望将其格式化如下 2014-12-18 像%Y-%m-%d但我似乎找不到一个“立即实现这一点的好方法。为什么javascript没有strftime函数?我如何实现我想要的?你尝试过Moment.js吗 安装 bower install moment --save # bower npm install moment --save # npm Install-Package Moment.js # NuGet 格式日期 moment().f

我有一个javascript日期对象,并希望将其格式化如下

2014-12-18

%Y-%m-%d
但我似乎找不到一个“立即实现这一点的好方法。为什么javascript没有strftime函数?我如何实现我想要的?

你尝试过Moment.js吗

安装

bower install moment --save # bower
npm install moment --save   # npm
Install-Package Moment.js   # NuGet
格式日期

moment().format('MMMM Do YYYY, h:mm:ss a'); // December 18th 2014, 2:08:59 pm
moment().format('dddd');                    // Thursday
moment().format("MMM Do YY");               // Dec 18th 14
moment().format('YYYY [escaped] YYYY');     // 2014 escaped 2014
moment().format();                          // 2014-12-18T14:08:59+01:00
以下是您可以使用的库。缺少日期格式化功能并没有什么好的理由


包含用于在vanilla JS中将日期格式化为
%Y-%m-%d

无需使用外部库:

var now = new Date();
var s = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate();
alert(s); // 2014-12-18
说明:

getFullYear()
提供4位数的年份

getMonth()
提供月份(基于0,因此必须添加1)


getDate()
提供了月份的日期

根据helpermethod的答案,下面是一种使用0填充月份和日期的方法:

function pad(num) {
  return (num >= 10 ? '' : '0') + num;
}

const now = new Date();
const s = now.getFullYear() + '-' + pad(now.getMonth() + 1) + '-' + pad(now.getDate());
alert(s); // 2020-04-08

虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生变化,只有链接的答案可能会无效。我直接提供了链接,因为在官方网站上有你需要的关于矩量.js的一切,但我同意你的看法,最好是提供回答这里;)仅供参考的时刻是一个相当大的依赖项。有一些较新的较轻的替代方案,如或请注意,getMonth和getDate可以是1位数字,因此如果您想要2014-01-09而不是2014-1-9这样的日期,您需要有选择地用“0”填充它