如何在Javascript中生成当前天数到最后几天的日期?

时间:2015-12-04 12:47:47

标签: javascript

我想在 Javascript 中生成日期作为我的 PHP 代码,但我不知道该怎么做。

$begin2 = new DateTime(date("Y-m-d", strtotime("-5 day")));
$interval2 = new DateInterval('P1D');
$end2 = new DateTime(date("Y-m-d", strtotime("+1 day")));
$daterange2 = new DatePeriod($begin2, $interval2, $end2);
foreach (array_reverse(iterator_to_array($daterange2)) as $val) {
echo $val->format("Ymd");
}
Output:
2015-12-04
2015-12-03
2015-12-02
2015-12-01
2015-11-30
2015-11-29
2015-11-28
2015-11-27
2015-11-26
2015-11-25

3 个答案:

答案 0 :(得分:1)

修改

哇,完全错过了问题的重点!

似乎您希望今天的日期在ISO 8601格式中停留一段时间。 Date构造函数将创建一个日期,Date.prototype.toISOString将返回ISO 8601日期。它只需要修剪时间部分。

因此,从今天起返回 n 天的所有日期返回日期字符串的函数是:

function getDateRange(n) {
  var d = new Date(),
      dates = [];
 
  while (n--) {
    dates.push(d.toISOString().split('T')[0]);
    d.setDate(d.getDate() - 1);
  }
  return dates;
}

// Example
document.write(getDateRange(10).join('<br>'));

原始答案

在javascript中解析日期字符串的唯一可靠方法是手动完成。图书馆可以提供帮助,但定制的功能并不多:

function parseYMD(s) {
  var b = s.split(/\D/);
  return new Date(b[0], b[1]-1, b[2]);
}

document.write(parseYMD('2015-12-04'))

这假设字符串是有效日期,并将字符串解析为本地日期,与ECMAScript 2015(和ISO 8601)一致。如果您还需要验证字符串,则需要一些额外的行。

答案 1 :(得分:1)

Native&#34; Date&#34;对于某些日期操作来说已经足够了。

&#13;
&#13;
var myDate = new Date();
var dateLate = new Date();
var dateEarly = new Date();

dateLate.setDate(dateLate.getDate() + 10);
dateEarly.setDate(dateEarly.getDate() - 10);

myDate.setDate(dateLate.getDate());
while (myDate.getDate() != dateEarly.getDate()) {
    myDate.setDate(myDate.getDate() - 1);
    document.write(myDate.toLocaleDateString() + '<br>');
}
&#13;
&#13;
&#13;

您可以采用其他方式格式化日期。

答案 2 :(得分:1)

这里的代码是按照给定日期的相反顺序进行迭代的

 var now = new Date();
    var begin2 = new Date();
    var end2 = new Date();
    var year, month, day, datestr;
    begin2.setDate(now.getDate() - 5);
    end2.setDate(now.getDate() + 1);
    var current = begin2;
    var resulting_dates = [];
    while (current <= end2) {
      datestr = current.getFullYear() + '-' + ('0' + (current.getMonth() + 1)).slice(-2) + '-' + ('0' + current.getDate()).slice(-2);
      resulting_dates.push(datestr);
      current.setDate(current.getDate() + 1);
    }
    console.log(resulting_dates);