繁体   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