我在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。
答案 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