簡體   English   中英

如何在Javascript中生成當前天數到最后幾天的日期?

[英]How to generate date from current days to last days in 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

編輯

哇,完全錯過了問題的重點!

似乎您希望今天的日期以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)一致。 如果您還需要驗證字符串,則需要一些額外的行。

對於某些日期操作,原生“日期”就足夠了。

 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>'); } 

您可以以不同的方式格式化日期。

這是在給定日期以相反順序進行迭代的代碼

 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM