The Spring Equinox has just begun, and I needed a PHP snippet that would display the current season, where Dec, Jan and Feb are Winter, etc. Here’s how.
<?php
$seasons = array("Winter","Spring","Summer","Autumn");
echo $seasons[(int)((date("n") %12)/3)];
?>
Notes
- First we create an array of season names, $seasons[0]=”Winter”, etc.
- date(“n”) produces a numeric month 1..12 (1=Jan, 12=Dec)
- date(“n”) %12 (modulus 12) converts month 12 (Dec) to 0. Modulus is also the remainder, so 12%12 is 1 remained 0.
- Then we divide by 3 and convert to an integer to produce four groups of months, 0,1,2,3.
- Then we display the nth array element.
Summary
| Month: | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
| date(“n”): | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| date(“n”)%12: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 0 |
| (date(“n”)%12)/3: | 1/3 | 2/3 | 1 | 4/3 | 5/3 | 2 | 7/3 | 8/3 | 3 | 10/3 | 11/3 | 0 |
| int(date(“n”)%12)/3: | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | 0 |
| $season[x]: | Winter | Spring | Summer | Autumn | Win | |||||||