我正在创建一个值,显示从日期到现在的剩余时间:
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
,则仅显示years
或months
。所以在这种情况下,我只想得到结果0
。如果它只剩下一天,那么它会显示27 days
,但它应显示1 days
(因此,如果结果为1 day
显示为单数)。
我尝试过类似的东西,但它不起作用:
1
答案 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);}