我有一个网站,使用4个不同的背景图像作为标题区域,在视觉上对应于耳朵的季节(夏季,秋季等) - 对于夏季时间帧我使用一个图像,秋天 - 另一个和等等。问题是,一旦一年中的季节发生变化,我必须手动更改这些图像。
也许有人可以展示如何检查当年的当前时间/季节,然后将相应的类打印到标题元素(.summer,.autumn等)?
我认为使用PHP会是这样的。
答案 0 :(得分:5)
正如我在评论中所说,这是一个有趣的挑战,因为dates of seasons总是在变化,并且根据您所居住的世界的不同而不同。您的服务器时间和网站访问者的当地时间也是一个因素。
既然您已经表示您只是对基于服务器时间的简单示例感兴趣并且您并不关心它是否准确,那么这应该让您滚动:
// get today's date
$today = new DateTime();
echo 'Today is: ' . $today->format('m-d-Y') . '<br />';
// get the season dates
$spring = new DateTime('March 20');
$summer = new DateTime('June 20');
$fall = new DateTime('September 22');
$winter = new DateTime('December 21');
switch(true) {
case $today >= $spring && $today < $summer:
echo 'It\'s Spring!';
break;
case $today >= $summer && $today < $fall:
echo 'It\'s Summer!';
break;
case $today >= $fall && $today < $winter:
echo 'It\'s Fall!';
break;
default:
echo 'It must be Winter!';
}
这将输出:
Today is: 11-30-2016
It's Fall!
答案 1 :(得分:1)
人们可能会考虑这种法术,但是当我正在寻找可以使用的方法时,我已经到了这里。 马丁先生的回答很好,假设年份不会改变,这是我的摘录,可能对将来的某个人有用:
private function timestampToSeason(\DateTime $dateTime): string{
$dayOfTheYear = $dateTime->format('z');
if($dayOfTheYear < 80 || $dayOfTheYear > 356){
return 'Winter';
}
if($dayOfTheYear < 173){
return 'Spring';
}
if($dayOfTheYear < 266){
return 'Summer';
}
return 'Fall';
}
欢呼!