开发者

Problem with short date format in php

I have problem with date function in ph开发者_C百科p. If I supply string in format "d.m.y" for example "01.01.01" it gets rendered as todays date which means that php gets confused.

I found:

Note:

The "Day, month and two digit year, with dots or tabs" format (dd [.\t] mm "." yy) only works for the year values 61 (inclusive) to 99 (inclusive) - outside those years the time format "HH [.:] MM [.:] SS" has precedence.

on: php.net site

How to override this behavior?

I know of date_create_from_format function which would work fine if I knew input will always be in format "d.m.y", but it won't.

UPDATE 1:

Code

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

outputs 2010-10-19 and I wanted 2001-01-01.


To format a date other than now, use the second parameter. For example:

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

echoes 19.10.09


Just read the documentation! PHP's site is excellent

It seems like you want to reformat a date?

mktime() gives unix timestamp from component pieces date() gives string from unixtimestamp (or implied now) getdate() gives assoc array from unix timestamp

I think you want -

$arr = explode($dateIn, ':'); //get array [day, month, year]
$timestamp = mktime(0,0,0, $arr[0], $arr[1], $arr[2]) //unix time stamp, a long integer representing time
date(DESIREDFORMAT, $timestamp);

check out the output formats here - http://us2.php.net/manual/en/function.date.php


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

Edit

To adjust it a bit more to get your exact output:

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜