将字符串转换为日期

时间:2015-04-04 19:30:50

标签: php sql database function date

我在表格中有这样的日期

2012-08-27 
2011-01-12 
2011-08-27  
2010-01-12
2010-08-27

给定的输入是类似" 2012年秋季"," 2015年春季"的字符串。规则是27日,总是意味着FALL,第12日总是意味着SPRING。

我需要如果给定字符串例如" 2012年秋季"输出' 2012-08-27'如果给定字符串" 2010年春季"我可以打印出这个日期' 2010-01-12'

这是我的代码,但这太长了。我可以把一年中的一年和另一个字符串中的季节。例如$year=2012$season=Fall

<?php

$string="Fall 2013";

if ($string=="Fall 2012"){
echo '2012-08-27'; 
}elseif ($string=="Spring 2012")

{
echo '2012-01-12'; 

}elseif ($string=="Fall 2013")
{
echo '2013-08-27'; 

}elseif ($string=="Fall 2014")
{
echo '2014-08-27'; 
}


?>

2 个答案:

答案 0 :(得分:1)

尝试此功能:

function changeSeasonToDate($string) {
    $season = [
        '~Spring (\d{4})~' => '\1-01-12',
        '~Fall (\d{4})~' => '\1-08-27',
    ];
    foreach ($season as $pattern => $date) {
        $string = preg_replace($pattern, $date, $string);
    }
    return $string;
}

使用示例:

echo changeSeasonToDate('Spring 2013'); # 2013-01-12
echo changeSeasonToDate('Fall 2015');   # 2015-08-27

demo

答案 1 :(得分:0)


MYSQL版本

declare @input as varchar(10)
set @input = 'Fall 2011'

    select
        id, date_column
    from
        tbl1
    where 
        year(date_column) = right(@input,4)
    group by 
        id, date_column
    having 
        (CASE 
            WHEN day(date_column) = 27 Then 'Fall' 
            else 'Spri' End) = left(@input,4)

MySQL版本

SELECT 
id, date_column 
FROM 
tbl1 
where 
year(date_column) = right('Fall 2010',4) 
group by id, date_column 
having 
(CASE WHEN day(date_column) = 27 Then 'Fall' else 'Spri' End) = left('Fall 2010',4)