是否可以在PHP中将字符串14转换为2014

时间:2014-07-22 14:51:37

标签: php date

我有一个由字符串组成的数组(2014/15):

$arr = explode("/", $Years, 2);

..然后是两个字符串:

$frstHalfYear = $arr[0];
$secHalfYear = $arr[1];

..输出如下:

for $frstHalfYear: 2014
for $secHalfYear: 15

我的问题是:是否可以将15转换为像2014这样的完整年份。 这样:

date("Y", strtotime($secHalfYear))

显然不起作用。简单的方法是在字符串的开头添加20,但我想知道是否有更通用的方法..

谢谢

3 个答案:

答案 0 :(得分:5)

这是我能想到的最通用的解决方案:

$secHalfYear = substr($frstHalfYear,0,-strlen($secHalfYear)).$secHalfYear;

基本上,这会从20 2014开始,并在15之前加上2015

它甚至支持2099/100格式!但更重要的是,你可以写2014/2015,它也可以正常工作。

答案 1 :(得分:1)

如果你想要一些完全超越顶部的东西:http://ideone.com/LzcgA3

var_dump(getDates('2014/15'));
var_dump(getDates('1999/12'));
var_dump(getDates('14/15'));


function getDates($dateRange) {
    $exp = explode('/', $dateRange);

    $startYear = $exp[0];
    // Cater for 14/15
    if ($startYear < 100) $startYear += date('Y') - date('y');

    $endYear = $exp[1];

    // If passed the full year, just use that
    if ($endYear < 100) {
        $shortStartYear = substr($startYear, 2, 2);
        if ($shortStartYear > $endYear) {
            // Jumping millenium
            $endYear += $startYear - $shortStartYear + 100;
        } else {
            // Same millenium
            $endYear += $startYear - $shortStartYear;
        }
    }

    return array('from'=>$startYear, 'to'=>$endYear);
}

这实际上适合大多数日期。但是,如果它有点过分,请欣赏;)

答案 2 :(得分:-1)

$secHalfYear = $frstHalfYear + 1;

你必须做出一些适当的假设来适当地延长日期,但我不相信我曾经见过这样的一年,而第二年并没有直接跟随第一年。< / p>

相关问题