关于javascript:如何以YYYY-MM-DD格式获取日期?

How do I get a date in YYYY-MM-DD format?

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

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

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

Mon Aug 24 2015 4:20:00 GMT-0800 (Pacific Standard Time)

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

8/24/2015

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

8/24/2016 4:20


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

1
2
var date = (new Date()).toISOString().split('T')[0];
document.getElementById('date').innerHTML = date;
1
 

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


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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


另一种方式:

1
2
var today = new Date().getFullYear()+'-'+("0"+(new Date().getMonth()+1)).slice(-2)+'-'+("0"+new Date().getDate()).slice(-2)
document.getElementById("today").innerHTML = today
1
 


您希望实现的目标可以通过本机JavaScript实现。对象Date具有完全生成所需输出的方法。
以下是代码示例:

1
2
3
4
5
6
7
var d = new Date();
console.log(d);
>>> Sun Jan 28 2018 08:28:04 GMT+0000 (GMT)
console.log(d.toLocaleDateString());
>>> 1/28/2018
console.log(d.toLocaleString());
>>> 1/28/2018, 8:28:04 AM

真的没有必要重新发明轮子。


1
2
3
4
5
6
7
8
9
function formatdate(userDate){
  var omar= new Date(userDate);
  y  = omar.getFullYear().toString();
  m = omar.getMonth().toString();
  d = omar.getDate().toString();
  omar=y+m+d;
  return omar;
}
console.log(formatDate("12/31/2014"));


通过使用moment.js库,您可以这样做:

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


这是我创建的一个简单的函数,当我继续处理一个项目时,我一直需要以这种格式获得今天,昨天和明天的日期。

1
2
3
4
5
6
7
8
9
10
11
function returnYYYYMMDD(numFromToday = 0){
  let d = new Date();
  d.setDate(d.getDate() + numFromToday);
  const month = d.getMonth() < 9 ? '0' + (d.getMonth() + 1) : d.getMonth() + 1;
  const day = d.getDate() < 10 ? '0' + d.getDate() : d.getDate();
  return `${d.getFullYear()}-${month}-${day}`;
}

console.log(returnYYYYMMDD(-1)); // returns yesterday
console.log(returnYYYYMMDD()); // returns today
console.log(returnYYYYMMDD(1)); // returns tomorrow

可以很容易地修改为传递日期,但是在这里你传递一个数字,它将从今天起返回很多天。


如果您尝试获取'local-ISO'日期字符串。请尝试下面的代码。

1
2
3
function (date) {
    return new Date(+date - date.getTimezoneOffset() * 60 * 1000).toISOString().split(/[TZ]/).slice(0, 2).join(' ');
}

+date从日期获取毫秒数。

参考:Date.prototype.getTimezoneOffset
玩得开心:)