簡體   English   中英

如何修復 daterangepicker 中的自定義日期范圍問題?

[英]How to fix custom date range issue in daterangepicker?

if($selected_date_interval == 'Yesterday'){
 $_SESSION['start_date_by_interval'] = "moment().subtract(1, 'days')";
 $_SESSION['end_date_by_interval'] = "moment().subtract(1, 'days')";
}
elseif ($selected_date_interval == 'Today'){
 $_SESSION['start_date_by_interval'] = "moment()";
 $_SESSION['end_date_by_interval'] = "moment()";
 }
elseif($selected_date_interval == 'Last 7 Days'){
 $_SESSION['start_date_by_interval'] = "moment().subtract(6, 'days')";
 $_SESSION['end_date_by_interval'] = "moment()";
 }
elseif ($selected_date_interval == 'Last 30 Days')
{
 $_SESSION['start_date_by_interval'] = "moment().subtract(30, 'days')";
 $_SESSION['end_date_by_interval'] = "moment()";
 }
elseif ($selected_date_interval == 'This Month'){
 $_SESSION['start_date_by_interval'] = "moment().startOf('month')";
 $_SESSION['end_date_by_interval'] = "moment().endOf('month')";
 }
elseif ($selected_date_interval == 'Last Month'){
$_SESSION['start_date_by_interval'] = "moment().subtract(1, 'month').startOf('month')";
 $_SESSION['end_date_by_interval'] = "moment().subtract(1, 'month').endOf('month')";
 }else{
  $_SESSION['start_date_by_interval'] = "moment($start_date,'MMMM D, YYYY')";
  $_SESSION['end_date_by_interval'] = "moment($end_date,'MMMM D, YYYY')";
  }

我的所有類型的日期范圍都運行良好,而不是自定義日期。 每當我選擇自定義日期時,日期顯示不正確。 所以對於自定義日期,我在最后一個 else 條件中傳遞了上面的日期類型和格式。 我做錯了什么請告訴我。

注意 - 我正在使用http://daterangepicker.com庫。

這是我的日期選擇器 javascript 代碼。

$('#reportrange').daterangepicker({
            "showDropdowns": true,
            "autoApply": false,

            ranges: {
                'Today': [moment(), moment()],
                'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                'Last 7 Days': [moment().subtract(6, 'days'), moment()],
                'Last 30 Days': [moment().subtract(30, 'days'), moment()],
                'This Month': [moment().startOf('month'), moment().endOf('month')],
                'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
//                'Custom': [moment(end,'YYYY-MM-DD'), moment(start,'YYYY-MM-DD')]
//                'Custom Range': [end, start]
            },
            startDate: start,
            endDate: end,
            "locale": {
                "format": "YYYY-MM-DD",
                "separator": "-",
                "applyLabel": "Apply",
                "cancelLabel": "Cancel",
                "fromLabel": "From",
                "toLabel": "To",
                "customRangeLabel": "Custom",
                "weekLabel": "W",
                "daysOfWeek": [
                    "Su",
                    "Mo",
                    "Tu",
                    "We",
                    "Th",
                    "Fr",
                    "Sa"
                ],
                "monthNames": [
                    "January",
                    "February",
                    "March",
                    "April",
                    "May",
                    "June",
                    "July",
                    "August",
                    "September",
                    "October",
                    "November",
                    "December"
                ],
                "firstDay": 1
            },
            opens: 'left'
        }, cb);

        cb(start, end);

    });

我不確定你是否讓它工作,但我也在尋找同樣問題的解決方案並解決了這個問題。

解決方法如下:

在您的代碼中,您要定義: 'Custom Range': [end, start]而不是這個,您必須以[moment().subtract(30, 'days'), moment()]格式提供開始和結束日期。 所以你必須找到天數的差異並提供它來代替'moment().subtract(30, 'days')' 對我來說,這個解決方案工作正常。

暫無
暫無

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

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