在PHP中,天的范围以月为单位
我试图使用天(值为$daydiff)输出月数 整个代码如下所示:在PHP中,天的范围以月为单位,php,operators,date-range,date-arithmetic,Php,Operators,Date Range,Date Arithmetic,我试图使用天(值为$daydiff)输出月数 整个代码如下所示: $ArrivalDate = $variants_data['ArrivalDate']; $daydiff=floor((abs(strtotime(date("Y-m-d")) - strtotime($ArrivalDate))/(60*60*24))); if (!empty($daydiff) && $ArrivalDate == '2013-12-25') { $ETA ='Date N
$ArrivalDate = $variants_data['ArrivalDate'];
$daydiff=floor((abs(strtotime(date("Y-m-d")) - strtotime($ArrivalDate))/(60*60*24)));
if (!empty($daydiff) && $ArrivalDate == '2013-12-25') {
$ETA ='Date Not Confirmed';
}
elseif (!empty($daydiff) && is_null($ArrivalDate)) {
$ETA ='Not available';
}
elseif ( $daydiff > 30 && $daydiff < 60 ) { // anything between 31 and 59 days is 1 month
$ETA ='1 Month';
}
elseif ( $daydiff > 60 && $daydiff < 90 ) { // anything between 61 and 89 days is 2 months
$ETA ='2 Months';
}
else
{
$ETA ='';
}
$ArrivalDate=$variants\u数据['ArrivalDate'];
$daydiff=楼层((abs(标准时间(日期)(“Y-m-d”)-标准时间($ArrivalDate))/(60*60*24));
如果(!empty($daydiff)&&$ArrivalDate=='2013-12-25'){
$ETA=‘日期未确认’;
}
elseif(!empty($daydiff)和&is_null($ArrivalDate)){
$ETA=‘不可用’;
}
elseif($daydiff>30&$daydiff<60){//31到59天之间的任何时间都是1个月
$ETA='1个月';
}
elseif($daydiff>60&$daydiff<90){//在61到89天之间的任何时间都是2个月
$ETA='2个月';
}
其他的
{
$ETA='';
}
这段代码没有给出所需的结果
elseif ( $daydiff > 30 && $daydiff < 60 ) { // anything between 31 and 59 days is 1 month
$ETA ='1 Month';
}
elseif ( $daydiff > 60 && $daydiff < 90 ) { // anything between 61 and 89 days is 2 months
$ETA ='2 Months';
}
else
{
$ETA ='';
}
elseif($daydiff>30&$daydiff<60){//31到59天之间的任何时间都是1个月
$ETA='1个月';
}
elseif($daydiff>60&$daydiff<90){//在61到89天之间的任何时间都是2个月
$ETA='2个月';
}
其他的
{
$ETA='';
}
结果是“日期未确认”。如果$daydiff值在范围内,则要求的结果为“1个月”或“2个月”
我做错了什么?试试看
$ArrivalDate = $variants_data['ArrivalDate'];
if (!empty($ArrivalDate)){
$ArrivalDate = date('Y-m-d', strtotime($ArrivalDate));
$daydiff=floor(abs(strtotime(date("Y-m-d")) - strtotime($ArrivalDate)) / (60*60*24));
echo $daydiff;
if ($ArrivalDate == '2013-12-25') {
$ETA ='Date Not Confirmed';
}
elseif ( $daydiff > 30 && $daydiff < 60 ) { // anything between 31 and 59 days is 1 month
$ETA ='1 Month';
}
elseif ( $daydiff > 60 && $daydiff < 90 ) { // anything between 61 and 89 days is 2 months
$ETA ='2 Months';
}
else
{
$ETA ='';
}
} else {
$ETA ='Not available';
}
$ArrivalDate=$variants\u数据['ArrivalDate'];
如果(!空($ArrivalDate)){
$ArrivalDate=日期('Y-m-d',标准时间($ArrivalDate));
$daydiff=楼层(abs(标准时间(日期)(“Y-m-d”)-标准时间($ArrivalDate))/(60*60*24));
echo$daydiff;
如果($ArrivalDate==“2013-12-25”){
$ETA=‘日期未确认’;
}
elseif($daydiff>30&$daydiff<60){//31到59天之间的任何时间都是1个月
$ETA='1个月';
}
elseif($daydiff>60&$daydiff<90){//在61到89天之间的任何时间都是2个月
$ETA='2个月';
}
其他的
{
$ETA='';
}
}否则{
$ETA=‘不可用’;
}
试试这个
下面是一个简单的例子,可以在没有其他if-else条件的情况下计算月内的日期差
<?php
$date1=date('2013-1-1');
$date2=date('2013-5-2');
echo "date1 :: ".$date1."<br>";
echo "date2 :: ".$date2."<br>";
$date_diff=strtotime($date2)-strtotime($date1);
echo "date difference in months => ".floor(($date_diff)/2628000)." months <br>";
?>
您能给出一些$daydiff的输出示例吗?似乎$ArrivalDate始终是“2013-12-25”,因此第一个if语句是true,因此您的if语句!空($daydiff)和&$ArrivalDate=='2013-12-25'
评估为true,因此$daydiff
可能不是空的,$ArrivalDate
实际上等于2013-12-25
。请检查这些值,因为在某些产品上,如果没有它们调试您的代码$daydiff=2013-05-05是不可能的,我不知道为什么它默认为“日期未确认”您确定获取的$ArrivalDate
正确吗?@Chris nice,找到了答案,测试数据库没有更新,我引用了我们的ERP系统AX。到目前为止一切正常。谢谢大家的帮助。