如何以良好的格式显示剩余日期?

时间:2016-01-18 10:09:10

标签: php

我正在创建一个值,显示从日期到现在的剩余时间:

pictureBox.Image = "c:\TestPhotoQualityFifty.jpg";

此案例的结果是:$date=date_create(date('Y-m-d H:i:s', strtotime($mydate))); $curdate=date_create(date("Y-m-d H:i:s")); $diff=date_diff($date,$curdate); $diff1= $diff->format("%y years %m months %d days");

我想要做的是,如果它们不是0 years 0 months 27 days,则仅显示yearsmonths。所以在这种情况下,我只想得到结果0。如果它只剩下一天,那么它会显示27 days,但它应显示1 days(因此,如果结果为1 day显示为单数)。

我尝试过类似的东西,但它不起作用:

1

2 个答案:

答案 0 :(得分:3)

date_diff会返回DateInterval class的一个实例,其中包含相应年份,月份和日期的类变量$y$m$d。< / p>

因此,您尝试实现的目标仍然可以使用以下变量来完成:

$diff=date_diff($date,$curdate);
$format = '';
if ($diff->y > 0) {
     $format = '%y years';
} else if ($diff->m > 0) {
     $format = '%m months';
} else {
     $format = '%d days';
}
$diff1 = $diff->format($format);

年/月/日的消除取决于OP。

(编辑)的

在这种情况下,只会打印一个类别,但要一次获得多个类别,请将“if-else”修改为个别“if”并与之前的类别连接,

if ($diff->y > 0) {
     $format = '%y years ';
}
if ($diff->m > 0) {
     $format .= '%m months ';
}
if ($diff->d > 0) {
     $format .= '%d days';
}

答案 1 :(得分:1)

强大的功能,以获得两个日期差异。

PARA:日期应为YYYY-MM-DD格式

结果格式: //&#39;%y年%%m月%d天%h小时%i分钟%s秒秒&#39; =&GT; 1年3个月14天11小时49分36秒

//&#39;%y年%%月%d日&#39; =&GT; 1年3个月14天

//&#39;%m月%d日&#39; =&GT; 3个月14天

//&#39;%d日%h小时&#39; =&GT; 14天11小时

//&#39;%d Day&#39; =&GT; 14天

//&#39;%h小时%i分钟%s秒&#39; =&GT; 11小时49分36秒

//&#39;%i分秒秒秒&#39; =&GT; 49分钟36秒

//&#39;%h Hours =&gt; 11小时

//&#39;%a Days =&gt; 468天

function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' ){
$datetime1 = date_create($date_1);

$datetime2 = date_create($date_2);

$interval = date_diff($datetime1, $datetime2);

return $interval->format($differenceFormat);}

请点击此链接 http://php.net/manual/en/function.date-diff.php