我发现此片段根据年份计算中国十二生肖。
<?php
$year = 2016;
switch (($year-4 ) % 12) {
case 0 : $zodiac = 'Rat' ; break ;
case 1 : $zodiac = 'Ox' ; break ;
case 2 : $zodiac = 'Tiger' ; break ;
case 3 : $zodiac = 'Rabbit' ; break ;
case 4 : $zodiac = 'Dragon' ; break ;
case 5 : $zodiac = 'Snake' ; break ;
case 6 : $zodiac = 'Horse' ; break ;
case 7 : $zodiac = 'Goat' ; break ;
case 8 : $zodiac = 'Monkey' ; break ;
case 9 : $zodiac = 'Rooster' ; break ;
case 10 : $zodiac = 'DOG' ; break ;
case 11 : $zodiac = 'Pig' ; break ;
}
echo "{$year} is the year of the {$zodiac}.";
?>
我想知道为什么他们在切换剩余部分之前首先扣除4
?
答案 0 :(得分:1)
原因是Chinese Zodiac的12年周期不与Gregorian Calender(我们使用的那个)同步。
中国十二生肖的12年周期通常以“鼠”开头(如您的代码所示)。然而,格里高利日历年的“0 AD”并非“鼠”。老鼠到了转折时期最接近的一年实际上是在公元4年。
因此,为了使日历与黄道带正确对齐,并使其更易于阅读,程序员决定从第一年中简单地减去4,而不是更改所有数字(使兔子= 0,龙= 1等)