日期差异与PHP中的优化ETA结果

日期差异与PHP中的优化ETA结果,php,mysql,if-statement,Php,Mysql,If Statement,如果MySQL的日期=2013-12-25&$daydiff='any',我试图将输出设置为“datenotconfirm”,如果MySQL的日期=NULL',$daydiff='any',则输出为“notavailable” 我的代码 $ArrivalDate = $variants_data['ArrivalDate']; $daydiff=floor((abs(strtotime(date("Y-m-d")) - strtotime($ArrivalDate))/(60*60*24)))

如果MySQL的日期=2013-12-25&$daydiff='any',我试图将输出设置为“datenotconfirm”,如果MySQL的日期=NULL',$daydiff='any',则输出为“notavailable”

我的代码

$ArrivalDate = $variants_data['ArrivalDate'];

$daydiff=floor((abs(strtotime(date("Y-m-d")) - strtotime($ArrivalDate))/(60*60*24)));

if ( $daydiff = ''  AND $ArrivalDate ='2013-12-25') {
    $ETA ='Date Not Confirmed';
}

elseif ( $daydiff = ''  AND $ArrivalDate ='NULL') {
    $ETA ='Not available';
}

elseif ( $daydiff < '0') {
    $ETA ='';
}
elseif ( $daydiff < '31' ) {
    $ETA ='Within 30 days';
}

elseif ( $daydiff > '31' ) {
    $ETA ='1 Month';
}

elseif ( $daydiff < '60' )  {
    $ETA ='2 Months';
}

elseif ( $daydiff < '90' ) {
    $ETA ='3 Months';
}

elseif ( $daydiff < '121' ) {
    $ETA ='4 Months';
}

elseif ( $daydiff < '152' ) {
    $ETA ='5 Months';
}

elseif ( $daydiff < '182' ) {
    $ETA ='6 Months';
}

elseif ( $daydiff < '213' ) {
    $ETA ='7 Months';
}

elseif ( $daydiff < '245' ) {
    $ETA ='8 Months';
}

elseif ( $daydiff < '274' ) {
    $ETA ='9 Months';
}

elseif ( $daydiff < '304' ) {
    $ETA ='10 Months';
}

elseif ( $daydiff < '334' ) {
    $ETA ='11 Months';
}

elseif ( $daydiff < '365' ) {
    $ETA ='12 Months';
}

else
{
$ETA ='Not Applicable';
}
$ArrivalDate=$variants\u数据['ArrivalDate'];
$daydiff=楼层((abs(标准时间(日期)(“Y-m-d”)-标准时间($ArrivalDate))/(60*60*24));
如果($daydiff=''和$ArrivalDate='2013-12-25'){
$ETA=‘日期未确认’;
}
elseif($daydiff=''和$ArrivalDate='NULL'){
$ETA=‘不可用’;
}
elseif($daydiff<'0'){
$ETA='';
}
elseif($daydiff<'31'){
$ETA='30天内';
}
elseif($daydiff>'31'){
$ETA='1个月';
}
elseif($daydiff<'60'){
$ETA='2个月';
}
elseif($daydiff<'90'){
$ETA='3个月';
}
elseif($daydiff<'121'){
$ETA='4个月';
}
elseif($daydiff<'152'){
$ETA='5个月';
}
elseif($daydiff<'182'){
$ETA='6个月';
}
elseif($daydiff<'213'){
$ETA='7个月';
}
elseif($daydiff<'245'){
$ETA='8个月';
}
elseif($daydiff<'274'){
$ETA='9个月';
}
elseif($daydiff<'304'){
$ETA='10个月';
}
elseif($daydiff<'334'){
$ETA='11个月';
}
elseif($daydiff<'365'){
$ETA='12个月';
}
其他的
{
$ETA='不适用';
}

到目前为止,代码没有给出所需的结果,我什么时候出错了?

对于任何1个月或更长的时间,您通常会得到1个月的预计到达时间? 尝试向elseif语句添加多个条件,因为您的第一个elseif语句在31天后始终为true。比如说

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';
}
elseif($daydiff>30&$daydiff<60){//31到59天之间的任何时间都是1个月
$ETA='1个月';
}
elseif($daydiff>60&$daydiff<90){//在61到89天之间的任何时间都是2个月
$ETA='2个月';
}

等等……

重读时,我注意到您使用赋值运算符(
=
)进行初始比较。您应该改用相等运算符(
==
)。您的前两个条件应为:

if ( $daydiff == '' && $ArrivalDate == '2013-12-25') {
    $ETA ='Date Not Confirmed';
} elseif ( $daydiff == '' && $ArrivalDate == 'NULL') {
    $ETA ='Not available';
}

另外,是否可以将
$ArrivalDate
设置为
“NULL”
字符串值,或者您的意思是
NULL
为空?

您得到了什么结果,您的输入是什么,您希望这些输入得到什么结果?一个更正$daydiff==''和$ArrivalDate=='2013-12-25',$daydiff=''和$ArrivalDate=='NULL'@Crontab ETA根据我们从$daydiff获得的值调用结果。输入是$ArrivalDate,它从MySQL中获取的信息少于当前日期。MySQL上有一个特定的日期,简单地说是“日期未确认”,日期是2013-12-25,“空”表示没有预计到达时间,产品已经到达商店,没有预期订单。我也忘了一直检查。只是看起来“对”lol@Syndrose这绝对是一件容易错过的事情!感谢您的输入,但代码不起作用。它没有结果