2015-10-26 32 views
1

我只想在他们更近的时候回显某个日期。如何在日期和时间差异中进行自定义更改?

我已经创建了一个脚本,并且使用了以下代码。

$now = new DateTime(null, new DateTimeZone('UTC')); 
$todaydate=$now->format('Y-m-d H:i:s'); 
$expdate="2020-09-13 21:00:00"; 

function format_interval(DateInterval $interval) { 
    $result = ""; 
    if ($interval->y) { $result .= $interval->format("%y years "); } 
    if ($interval->m) { $result .= $interval->format("%m months "); } 
    if ($interval->d) { $result .= $interval->format("%d days "); } 
    if ($interval->h) { $result .= $interval->format("%h hours "); } 
    if ($interval->i) { $result .= $interval->format("%i minutes "); } 
    if ($interval->s) { $result .= $interval->format("%s seconds "); } 

    return $result; 
} 

$exp_date = new DateTime($expdate); 
$today_date = new DateTime($todaydate); 

$difference = $exp_date->diff($today_date); 

echo "Days left to expiry:".format_interval($difference)."</br>"; 

它给(近似结果)

剩余天期满4年10个月18天8时小时0分40秒

现在我想说明这只有当它即将到期2个月装置1个月30天或更小......

我试图

if ("%m"<=1){ 
     echo "Days left to expiry:".format_interval($difference)."</br>"; 
    } 

但它没有奏效?

任何帮助将高度appriciated。

谢谢。

+0

看看碳,它是数据处理非常有用: http://carbon.nesbot.com/docs/#api-difference –

回答

2

几个月有点困难,需要额外的逻辑,但你可以根据DateInterval类提供的日期为基础。

你可以改变的逻辑,像这样:

// Average 60 days over 2 months 
if($difference->days <= 60) { 
    echo "Days left to expiry:".format_interval($difference)."</br>"; 
} 
+0

是的,它的工作......还有,我怎样才能将“2020-09-13 21:00:00”转换成2020年9月13日21:00:00像这种格式?任何选项? echo date_format($ date,'g:ia \ o \ n l jS F Y'); 其不[工作](http://php.net/manual/en/datetime.format.php) –

+0

@SirenBrown如果你想格式化'$ exp_date',那个对象有一个格式化方法,即'$ exp_date-> format('g:ia \ o \ nl jS F Y');' - 结果:https://3v4l.org/7HCSE 文档可以在http://php.net/manual /en/datetime.format.php – steadweb

+0

我认为你要找的格式是https://3v4l.org/sPGaT,它是'd M. YH:i:s' – steadweb

1

@steadweb

<?php 
    $expdate="2020-09-13 21:00:00"; 
    $exp_date = new DateTime($expdate); 
    print $exp_date->format('d M. Y H:i:s'); 
?> 

是它的工作:)

相关问题