我有以下代码,想知道是否有更简单的方法,而没有所有IFELSE条件
if ($year == 13){
$shyear = '2012 / 2013';
}elseif ($year == 12){
$shyear = '2011 / 2012';
}elseif ($year == 11){
$shyear = '2010 / 2011';
}elseif ($year == 10){
$shyear = '2009 / 2010';
}elseif ($year == 9){
$shyear = '2008 / 2009';
}elseif ($year == 8){
$shyear = '2007 / 2008';
}
我爱 DateTime
。干净,简单,快速,可读。
$dt = DateTime::createFromFormat('y', $year);
$shyear = $dt->format('Y')-1 . " / " . $dt->format('Y');
这将导致$shyear
是这样的:
2007 / 2008
让我们测试它:
$dt = DateTime::createFromFormat('y', '8');
echo $dt->format('Y')-1 . " / " . $dt->format('Y');
$dt = DateTime::createFromFormat('y', '9');
echo $dt->format('Y')-1 . " / " . $dt->format('Y');
$dt = DateTime::createFromFormat('y', '10');
echo $dt->format('Y')-1 . " / " . $dt->format('Y');
$dt = DateTime::createFromFormat('y', '11');
echo $dt->format('Y')-1 . " / " . $dt->format('Y');
$dt = DateTime::createFromFormat('y', '12');
echo $dt->format('Y')-1 . " / " . $dt->format('Y');
$dt = DateTime::createFromFormat('y', '13');
echo $dt->format('Y')-1 . " / " . $dt->format('Y');
结果:
2007 / 2008
2008 / 2009
2009 / 2010
2010 / 2011
2011 / 2012
2012 / 2013
也与2000年一起工作!
$dt = DateTime::createFromFormat('y', '0');
echo $dt->format('Y')-1 . " / " . $dt->format('Y');
导致1999 / 2000
。
$ shyear = strlen($年(> 1?sprintf('20%d/20%d',$ 1年,$ 1年(:sprintf('200%d/200%d',$ 1年,$ 1,$年(;
<?php
$year = 15;
$shyear = strlen($year) > 1 ? sprintf('20%d / 20%d', $year-1, $year) : sprintf('200%d / 200%d', $year-1, $year);
echo $shyear;
?>
写了这件小代码,然后输出" 2014/2015"
另一种方式,考虑到您只需要特定范围的年份,就是使用关联数组
$array = array( "7"=>"2007",
"8"=>"2008",
"9"=>"2008",
"10"=>"2010",
"11"=>"2011",
"12"=>"2012",
"13"=>"2013");
if ($year >= 8 and $year <= 13) {
$shyear = $array["".($year-1).""]."/".$array["$year"];
}