簡體   English   中英

使用Javascript從日期獲取今天的日期數組

[英]get an array of dates from today for datepicker with Javascript

我正在嘗試編寫一個函數,該函數返回從今天到最大日期的日期數組,以便可以限制日期選擇器的選擇。 目前,我有以下內容:

   datesAfterToday: function (date) {
    var dates = []
    var currentDate = new Date()
    var endDate = new Date(8640000000000000).getFullYear()
    var addDays = function (days) {
      var date = new Date(this.valueOf())
      date.setDate(date.getDate() + days)
      return date
    }
    while (currentDate <= endDate) {
      dates.push(currentDate)
      currentDate = addDays.call(currentDate, 1)
    }
    return dates
  }

然后我使用Vue.js如下安裝它:

 mounted () {
   this.allowedDates = this.datesAfterToday
 },

但是我只得到一個對象數組,而不是正確的數組。

如何獲得正確的日期數組,以便可以將其綁定到allowdates屬性。

感謝您的幫助和時間!

另一種選擇是使用vuejs-datepicker例如:

<script>
var state = {
    disabled: {
        to: new Date(), // Disable all dates up to specific date
        from: new Date(8640000000000000) // Disable all dates after specific date        
    }
}
</script>

<datepicker :disabled="state.disabled"></datepicker>

請參閱文檔中的“ 禁用日期 ”。

對於初學者, new Date(8640000000000000).getFullYear()會將endDate設置為該日期的年份,即275760 currentDate將是今天的日期(以毫秒為單位),在我撰寫本文時為1511272934156 如您所見,currentDate始終大於endDate,因此while循環永遠不會進入內部的語句。

另一個問題是,您選擇的日期實際上是將來的很遠,並且您一次要填充一個數組。 您的循環很可能會使頁面凍結或完全崩潰。 嘗試選擇一個更易於管理的日期。

例如,在下面的代碼段中,我將endDate設置為首先將其初始化為今天,然后將年份設置為從現在開始恰好是一年。 這給了我一個大約365個值的數組。

您可以想象,如果我使用未來的273,748年,那么這個數組將有多大。

 var dates = [] var currentDate = new Date() var endDate = new Date() endDate.setFullYear(endDate.getFullYear()+1) var addDays = function (days) { var date = new Date(this.valueOf()) date.setDate(date.getDate() + days) return date } while (currentDate <= endDate) { dates.push(currentDate) currentDate = addDays.call(currentDate, 1) } console.log(dates) 

綜上所述,實際上您似乎被允許傳遞一個指定最小值和最大值而不是數組的對象。

https://vuetifyjs.com/components/pickers#example-6

let d = new Date()                  // today
let d2 = new Date()    
d2.setFullYear(date.getFullYear()+1) // Next year

this.allowedDays = {
    min : d.toISOString().substr(0, 10), // e.g. 2017-11-21
    max : d2.toISOString().substr(0, 10)
}

暫無
暫無

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

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