PHP:如何格式化日期时间以使用if/else作为CSS



标题可能没有多大意义;我是一个PHP业余爱好者。

我正在尝试为我的论坛创建一个自定义的成员标签,该标签将显示"X年经验",但每个年份都有不同的颜色,例如6个月以下的红色,第一年的蓝色,第二年的黄色,等等。

这是我目前使用的代码:

<div class="ipsType_center memExperience" data-ipstooltip="">
{{$joinDate = $comment->author()->get_joined(); $currentDate = new DateTime(); $interval = $joinDate->diff($currentDate); $experience = IPSDateTime::formatInterval($interval, 1);}}
<li class="ipsResponsive_hidePhone memCustomFields">{$experience} {lang="memberexperience_experience"}</li>

我找到了一个工作样本来获取日期差异,效果很好。现在,我只需要弄清楚如何将$experience转化为一个可以与CSS一起使用的值。

我还发现了允许您将变量格式化为小时以进行比较的代码。这就是代码:

<?php 
$hour = $experience->format('H');
if ($hour < 12) {
echo "Morning";
} else {
echo "Afternoon or evening";
}
?>

这对我不起作用,因为我的输出总是X天、X月或X年。总是有一个相关的数字,但可能是几天、几个月、几年。

我想做的是。。。

{{if $experience < 6 Months}}
Make Text Red
{{elseif $experience > 1 Year}}
Make Text Blue
{{elseif $experience > 2 Years}}
Make Text Yellow
...

我觉得在这里切换可能是更好的选择,但同样,我不确定如何确保$experience转换为天、月、年。

如果$joinDate还不是日期时间,则将其转换为一个:

$joinDatetime = DateTime::createFromFormat('m/d/Y', $joinDate);

对两个日期时间对象进行差异处理:

$interval = $joinDatetime->diff($currentDate);

然后,您需要将差额转换为月份:

$months = $interval->m + ($interval->y * 12);

为一个变量分配一个类,并在html中回显该变量。例如:

$class = 'default';
if ($months < 6) {
$class = 'red';
} elseif ($months > 12) {
$class = 'blue'; 
} elseif ($months > 24) {
$class = 'yellow';
}

然后在你的html中,做这样的事情:

<li class="ipsResponsive_hidePhone memCustomFields {$class}">{$experience}{lang="memberexperience_experience"}</li>

最新更新