生成日期php

  • 本文关键字:php 日期 php
  • 更新时间 :
  • 英文 :


我有以下代码,想知道是否有更简单的方法,而没有所有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"];
}

最新更新