如何以YYYY-MM-DD格式获取日期?

One*_*tig 8 javascript date

通常,如果我想得到约会,我可以做一些类似的事情

var d = new Date(); console.log(d);

这样做的问题是,当我运行该代码时,它返回:

2015年8月24日星期一4:20:00 GMT-0800(太平洋标准时间)

我怎么能得到Date()方法以"MM-DD-YYYY"格式返回一个值,所以它将返回如下内容:

2015年8月24日

或者,也许是MM-DD-YYYY H:M

8/24/2016 4:20

lea*_*rrr 31

只需使用内置.toISOString()方法,如下所示:toISOString().split('T')[0].简单,干净,一条线.

var date = (new Date()).toISOString().split('T')[0];
document.getElementById('date').innerHTML = date;
Run Code Online (Sandbox Code Playgroud)
<div id="date"></div>
Run Code Online (Sandbox Code Playgroud)

请注意,格式化字符串的时区是UTC而不是本地时间.

  • 这可能需要注意结果将在_UTC(GMT + 0000)_中,而不是客户端的本地时区(例如_GMT-0700_) (9认同)
  • 警告!由于此方法将日期转换为 UTC,因此生成的字符串将顽固地加上或减去一天,具体取决于您的时区和一天中的时间。所以这不是最好的解决方案,这很烦人。 (4认同)

Pat*_*607 9

下面的代码是一种方法.如果你有一个日期,把它传递给convertDate()函数,它将返回YYYY-MM-DD格式的字符串:

var todaysDate = new Date();

function convertDate(date) {
  var yyyy = date.getFullYear().toString();
  var mm = (date.getMonth()+1).toString();
  var dd  = date.getDate().toString();

  var mmChars = mm.split('');
  var ddChars = dd.split('');

  return yyyy + '-' + (mmChars[1]?mm:"0"+mmChars[0]) + '-' + (ddChars[1]?dd:"0"+ddChars[0]);
}

console.log(convertDate(todaysDate)); // Returns: 2015-08-25
Run Code Online (Sandbox Code Playgroud)

  • `x &lt; 10` 比 `.split` 便宜得多并且节省了 `.toString`ing (3认同)

dev*_*per 8

“YYYY-MM-DD”的一行解决方案

new Date().toLocaleDateString("fr-CA", {year:"numeric", month: "2-digit", day:"2-digit"})
Run Code Online (Sandbox Code Playgroud)

// 2023 年除夕夜的输出:'2023-12-31'


Dev*_*hon 5

还有一种方式:

var today = new Date().getFullYear()+'-'+("0"+(new Date().getMonth()+1)).slice(-2)+'-'+("0"+new Date().getDate()).slice(-2)
document.getElementById("today").innerHTML = today
Run Code Online (Sandbox Code Playgroud)
<div id="today">
Run Code Online (Sandbox Code Playgroud)


小智 5

通过使用Moment.js库,您可以执行以下操作:

var datetime = new Date("2015-09-17 15:00:00");
datetime = moment(datetime).format("YYYY-MM-DD");
Run Code Online (Sandbox Code Playgroud)