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"
|
|
|