php中短日期格式的问题

时间:2010-10-19 20:02:02

标签: php date format

我在php中有日期功能的问题。如果我提供格式为“d.m.y”的字符串,例如“01.01.01”,则会将其呈现为今天的日期,这意味着php会感到困惑。

我找到了:

  

注意:

     

“日,月,两位数年份,带点或标签”格式(dd [。\ t] mm“。”yy)   仅适用于年份值61(含)到99   (包括) - 在那些年份之外的时间格式“HH [。:] MM [。:] SS”具有   优先级。

on:php.net site

如何覆盖此行为?

我知道date_create_from_format函数,如果我知道输入将始终采用格式“d.m.y”,它将正常工作,但它不会。

更新1:

代码

$date = new DateTime('01.01.01');
echo $date->format('Y-m-d');

输出2010-10-19,我想要2001-01-01。

3 个答案:

答案 0 :(得分:1)

要格式化除现在以外的日期,请使用第二个参数。例如:

echo date("d.m.y", 1255982665);

回应19.10.09

答案 1 :(得分:1)

请阅读文档! PHP的网站非常好

好像你想重新格式化日期?

mktime()从组件中提供unix时间戳 date()从unixtimestamp(或现在隐含)给出字符串 getdate()从unix时间戳

给出assoc数组

我想你想要 -

$ arr = explode($ dateIn,':'); //获取数组[日,月,年]
$ timestamp = mktime(0,0,0,$ arr [0],$ arr [1],$ arr [2])// unix时间戳,表示时间的长整数
date(DESIREDFORMAT,$ timestamp);

在此处查看输出格式 - http://us2.php.net/manual/en/function.date.php

答案 2 :(得分:0)

function getDateFromString( $str )
{
    $date = DateTime::createFromFormat( 'd.m.y', $str );
    if ( $date !== false )
        return $date->getTimestamp();

    // you can try other common formats here
    // ...

    // otherwise just parse whatever there is
    return strtotime( $str );
}

echo date( 'd.m.Y H:i', getDateFromString( '01.01.01' ) ); // 01.01.2001 20:14

修改

要进一步调整以获得完全输出:

function getDateTimeFromString( $str )
{
    $date = DateTime::createFromFormat( 'd.m.y', $str );
    if ( $date !== false )
        return $date;

    // you can try other common formats here
    // ...

    // otherwise just parse whatever there is
    return new DateTime( $str );
}

$date = getDateTimeFromString( '01.01.01' );
echo $date->format( 'Y-m-d' ); // 2001-01-01