To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

Ogólne - Format daty urodzin

Anonymous - 03-05-2009, 09:05
Temat postu: Format daty urodzin
Witam,
zrobiłem sobie konwersję na phpBB3 ale wrzucam do tego działu, bo sprawa dotyczy wersji phpBB2 by Przemo.

Format daty urodzin jest jakiś "dziwny", tzn. niezgodny z date(). Np. zapis z bazy: 7062

Jak mogę z tego wyciągnąć dzień / miesiąc / rok? Chciałbym sobie i to jakoś przenieść.

lui754 - 03-05-2009, 09:07

http://www.przemo.org/php...pic.php?t=70081

Tutaj masz coś na temat daty. Przeczytaj dokładnie.

Anonymous - 03-05-2009, 09:15

Tamten kod dotyczy formatu daty ogólnie, w wypadku urodzin jest stosowany mod, dlatego jest inna. Już znalazłem jak to zrobić - wystarczy z includes/functions.php wyciągnąć sobie 2 funkcje i na przykładzie:

Kod:
<?php
function create_date($format, $gmepoch, $tz, $no_today = false)
{
    global $board_config, $lang;
    static $translate;

    if ( empty($translate) && $board_config['default_lang'] != 'english' )
    {
        @reset($lang['datetime']);
        while ( list($match, $replace) = @each($lang['datetime']) )
        {
            $translate[$match] = $replace;
        }
    }

    $tz_add = ($board_config['auto_date']) ? (3600 * ($tz + (@date('I', $gmepoch) && @date('I', CR_TIME)))) : (3600 * $tz);

    $epoch_time = $gmepoch + $tz_add;
    $current_time = CR_TIME + $tz_add;

    $cyear = @gmdate('Y', $current_time);
    $cmonth = @gmdate('n', $current_time);
    $cday = @gmdate('j', $current_time);
    $chour = @gmdate('G', $current_time);
    $cmin = @gmdate('i', $current_time);

    $today_begin = @gmmktime(0, 0, 0, $cmonth, $cday, $cyear);
    $today_end = @gmmktime(23, 59, 59, $cmonth, $cday, $cyear);
    $yesterday_begin = $today_begin - 86400;

    if ( $epoch_time > $yesterday_begin && $epoch_time < $today_end && !$no_today )
    {
        if ( $epoch_time < $today_begin )
        {
            return $lang['Yesterday'] . ' ' . @gmdate('G:i', $epoch_time);
        }
        else
        {
            return $lang['Today'] . ' ' . @gmdate('G:i', $epoch_time);
        }
    }

    return ( !empty($translate) ) ? strtr(@gmdate($format, $epoch_time), $translate) : @gmdate($format, $epoch_time);
}



function realdate($date_syntax = "Ymd", $date=0)
{
    $i=2;
    if ($date>=0)
    {
        return create_date($date_syntax, $date * 86400 + 1, 0, true);
    }
    else
    {
        $year= -(date%1461);
        $days = $date + $year * 1461;
        while ($days<0)
        {
            $year--;
            $days+=365;
            if ($i++==3)
            {
                $i=0;
                $days++;
            }
        }
    }
    $leap_year = ($i==0) ? TRUE : FALSE;
    $months_array = ($i==0) ?
        array (0,31,60,91,121,152,182,213,244,274,305,335,366) :
        array (0,31,59,90,120,151,181,212,243,273,304,334,365);
    for ($month=1;$month<12;$month++)
    {
        if ($days<$months_array[$month]) break;
    }

    $day=$days-$months_array[$month-1]+1;
   
    //you may gain speed performance by remove som of the below entry's if they are not needed/used
    return strtr ($date_syntax, array(
        'a' => '',
        'A' => '',
        '\\d' => 'd',
        'd' => ($day>9) ? $day : ' '.$day,
        '\\D' => 'D',
        '\\F' => 'F',
        'g' => '',
        'G' => '',
        'H' => '',
        'h' => '',
        'i' => '',
        'I' => '',
        '\\j' => 'j',
        'j' => $day,
        '\\l' => 'l',
        '\\L' => 'L',
        'L' => $leap_year,
        '\\m' => 'm',
        'm' => ($month>9) ? $month : ' '.$month,
        '\\M' => 'M',
        '\\n' => 'n',
        'n' => $month,
        'O' => '',
        's' => '',
        'S' => '',
        '\\t' => 't',
        't' => $months_array[$month]-$months_array[$month-1],
        'w' => '',
        '\\y' => 'y',
        'y' => ($year>29) ? $year-30 : $year+70,
        '\\Y' => 'Y',
        'Y' => $year+1970,
        '\\z' => 'z',
        'z' => $days,
        '\\W' => '',
        'W' => '') );
}

$time = 7062;
echo realdate ('j n Y',$time);
?>


Zwraca "3 5 1989"



Powered by phpBB modified by Przemo © 2003 phpBB Group