我正在尝试根据用户输入的开始日期和结束日期自动生成支持请求。
1我将计算2日期之间的月数,然后我会在每个月提出支持请求,直到结束日期为止。
我正在尝试这样
if($frequency=='Monthly') {
$ts1 = strtotime($sdate);
$ts2 = strtotime($edate);
$year1 = date('Y', $ts1);
$year2 = date('Y', $ts2);
$month1 = date('m', $ts1);
$month2 = date('m', $ts2);
$diff = (($year2 - $year1) * 12) + ($month2 - $month1);
for($i=1; $i<=$diff; $i++)
{
$time = strtotime($sdate);
$final = date("Y-m-d", strtotime("+1 month", $time));
$sql = mysqli_query($con, "SUPPORT REQUEST QUERY");
}
}
例如:开始日期是2017-06-19,结束日期是2017-08-21,那么支持请求应该在2017-06-19,2017-07-19和2017年生成3次 - 08-19
plz建议如何继续
答案 0 :(得分:4)
我认为没有必要计算月数,除非您想将其存储在数据库中或在某处使用它。
您可以通过以下代码从用户处获取开始日期和结束日期,并按照您想要的频率提高票证。
$startdate = "2017-06-19";//here is start date
$enddate = "2017-08-21";//end date
$tempdate = $startdate;//temporary storing start date
//comparing tempdate is not greater than end date
while(strtotime($tempdate)<=strtotime($enddate))
{
//this is my sample code. You can replace with yours.
echo "Raised ticket on ".$tempdate."<br/>";
$tempdate = date('Y-m-d', strtotime("+1 month", strtotime($tempdate)));
}
<强>输出强>
Raised ticket on 2017-06-19
Raised ticket on 2017-07-19
Raised ticket on 2017-08-19
答案 1 :(得分:1)
试试这个
$sdate = "2017-06-19";
$edate = "2017-08-18";
$d1 = new DateTime($sdate);
$d2 = new DateTime($edate);
$diff = $d1->diff($d2)->m;
$Tickets = array($sdate);
$time = strtotime("+1 month", strtotime($sdate));
for($i=1; $i<=$diff; $i++)
{
$Tickets[] = date("Y-m-d", $time);
$time = strtotime("+1 month", $time);
//$sql = mysqli_query($con, "SUPPORT REQUEST QUERY");
}
var_dump($Tickets);
现在您拥有数组$ Tickets
中的票证 EDIT;注意到如果结束日低于开始日,则使用的差异计算不起作用。更改为DateTime。
演示:https://3v4l.org/8UVRM