Seite 1 von 1

Uhr geht 1 Stunde nach bei Today/Yesterday Mod

Verfasst: 10.03.2006 10:06
von _KO_
Hallo phpBB-Gemeinde!

Bevor ich mich nun an Euch wende habe ich nun schon TAGELANG (immer wenn Zeit war) hier im Forum erst artig nach Antworten gesucht, aber keine Lösung gefunden. :cry:

Daher mein Problem, es ist ein albekanntes und anscheinend weitverbreitetes:

Ich wollte die Datumsanzeige in den Beiträgen so abändern, dass dort "Heute" und "Gestern" entsprechend angezeigt wird. Dafür habe ich den Today/Yesterday-Mod eingebaut (friendly Date). Wird auch nun schön angezeigt (leider auch im Header wo die Uhrzeit steht: Es ist: Heute, 08:50... :lol: , ich hab den Quelltext im Header entsprechend rausgeworfen).

Problem ist aber: Die Board-Uhr geht genau 1 Stunde nach! :evil:
Das nervt !!!


Was schon kontrolliert wurde:
- Uhrzeit für alle User steht auf GMT +1 Stunde, also korrekt
- alle User haben in der DB diesen Eintrag (1.00)
- die Serverzeit (Provider) ist korrekt, ich habe noch andere PHP-Anwendungen auf dem Server und sogar in derselben DB, die zeigen alle korrekt an! Nur das Forum nicht!
- Eine Änderung auf GMT +2 Stunden (inkl Anpassung der Userdaten in der DB) hat KEINERLEI Auswirkung!

Deaktiviere ich den Mod in der functions.php, geht die Uhr wieder richtig!
Also liegt der Fehler im Mod! Oder?

Ich hab mal testweise den "thetime"-Sting ganz am Anfang des Mods durch den Sommerzeit-Hack ersetzt, ohne Erfolg. Ich vermute mal, dass der Mod Probleme mit der deutschen Zeitsteuerung hat.

Habt Ihr eine Lösung für mich?
Braucht Ihr noch weitere Angaben?
Kann man den Mod irgendwie anpassen?
Gibts nen besseren Mod (einfach einzubauen!)?

Bin noch kein ausgereifter PHP-Spezi, daher bitte mich vorsichtshalber dem Prä-Noob-Status zuordnen. :D

Ich danke schon mal für Eure Hilfe (wenns denn welche gibt).

Verfasst: 10.03.2006 10:20
von Valerie Raghnall
hi,

welche boardversion nutzt du denn?

Verfasst: 10.03.2006 10:24
von _KO_
die aktuelle, 2.0.19

Verfasst: 10.03.2006 10:29
von Valerie Raghnall
hmm... wenn die gmt umstellung keine auswirkung hat... dann liegt es wohl irgendwo im code des mods... da müsstest du mal einfach nach sehen ob da irgendwo eine zeit fixiert ist. zumindest würde ich das jetzt vermuten... oder er ist fehlerhaft eingebaut.

Verfasst: 10.03.2006 10:39
von _KO_
Ich poste mal am Besten die entsprechende Sequenz der functions.php:
//
// Create date/time from format and timezone
//
function create_date($format, $gmepoch, $tz)
{
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;
}
}

// return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : @gmdate($format, $gmepoch + (3600 * $tz));

// friendly date mod\\*******************

$thetime = ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : @gmdate($format, $gmepoch + (3600 * $tz));

$L_Today = '<b>Heute</b>';
$L_Yesterday = 'Gestern';
$time_format = ", H:i"; // - hour:minute am/pm

$date = getdate();
$today = $date['mday'];
$month = $date['mon'];
$year = $date['year'];

$forum_date_today = @gmdate ("d", $gmepoch);
$forum_date_month = @gmdate ("m", $gmepoch);
$forum_date_year = @gmdate ("Y", $gmepoch);

if ($forum_date_today == $today && $forum_date_month == $month && $forum_date_year == $year)
$thetime = $L_Today . @gmdate ($time_format, $gmepoch);//today

else
if ($today != 1 && $forum_date_today == ($today-1) && $forum_date_month == $month && $forum_date_year == $year)
$thetime = $L_Yesterday . @gmdate ($time_format, $gmepoch);//yesterday

else
//if today is 1 and the month is not 1, then we have to check how many days in the previews month
//and then set $yesterday to the last day in the previews month
if ($today == 1 && $month != 1)
{
$yesterday = date ("t", mktime(0,0,0,($month-1),1,$year));//returns how many days in the previews month
if ($forum_date_today == $yesterday && $forum_date_month == ($month-1) && $forum_date_year == $year)
$thetime = $L_Yesterday . @gmdate ($time_format, $gmepoch);//yesterday
}
else
//if we are in the first day in the year
if ($today == 1 && $month == 1)
{
$yesterday = date ("t", mktime(0,0,0,12,1,($year -1)));
if ($forum_date_today == $yesterday && $forum_date_month == 12 && $forum_date_year == ($year-1))
$thetime = $L_Yesterday . @gmdate ($time_format, $gmepoch);//yesterday
}

return ($thetime);
//end friendly date \\*******************************
Ich hab den genau so eingebaut wie es in der Anleitung steht, einzige Anpassung ist die Sache mit dem eingedeutschten "Heute" (+ fett) und "Gestern". Sieht man ja oben.

Verfasst: 10.03.2006 23:36
von _KO_
hmmmm...

keiner eine Lösung parat?

Verfasst: 11.03.2006 11:54
von shadow66
Bei mir sieht eine Code Zeile etwas anders aus vielleicht liegt es daran,

Die ist eine Original Zeile und ist noch nicht modifiziert.
// Create date/time from format and timezone
//
function create_date($format, $gmepoch, $tz)
{
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;
}
}

return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * ($tz+date("I")))), $translate) : @gmdate($format, $gmepoch + (3600 * ($tz+date("I"))));