【发布时间】:2018-10-19 04:19:52
【问题描述】:
我有逗号分隔的天数(1,3,5,6),我想计算两天之间的天数。
我已经按照以下方式完成了。
$days=$model->days; // comma saperated days
$days=explode(',',$days); // converting days into array
$count=0;
$start_date = $model->activity_start_date; // i.e. 2018-03-27
$end_date = date('Y-m-d');
while(strtotime($start_date) <= strtotime($end_date)){
if(in_array(date("N",strtotime($start_date)),$days)){ // check for day no
$count++;
}
$start_date = date ("Y-m-d", strtotime("+1 day", strtotime($start_date)));
}
此代码运行良好。但问题是,如果两个日期之间的差异是一年或一年以上,那么它会循环 365 次或更多。
有什么方法可以减少执行时间以计算天数。或者可以使用 mysql 查询获取天数。
真实场景:我有一个事件有开始日期,它在一周内发生多次(即星期一和星期三),我想知道从开始日期到现在事件发生了多少次。如果开始日期是 2018 年 4 月 9 日,今天是 2018 年 5 月 9 日,则计数将为 9
【问题讨论】:
-
您可以使用 mysql 函数 datediff() 来获取日期之间的天数。请尝试一下。可能它会为你使用。选择日期差异('2018-05-08', '2018-05-01');
-
向您的问题添加示例输入和输出格式
-
输入为开始日期,输出为天数
-
所以你需要
echo count(explode(',',$days));? -
用输入和输出更新你的问题,这有多难?我现在投了赞成票。