Seite 1 von 3
Sommer- Winterzeit Problem mit heute gesten mod
Verfasst: 28.10.2007 13:48
von mark2
Ich habe dieses Thema bereits gefunden.
http://www.phpbb.de/doku/kb/sommerzeit
Da ich den Heute Gestern mod verwende konnte ich die Stelle zum einfügen nicht finden. Ich habe das dann so eingebaut.
Code: Alles auswählen
// Anfang Anzeige Heute - Gestern Mod
function create_date($format, $gmepoch, $tz, $calcDelta=true)
{
global $board_config, $lang;
static $translate;
if ( !$gmepoch )
{
// The next line integrated with the 'Last Visit' MOD (my own thing, unpublished)
return $lang['datetime']['Hidden_time'];
}
$time = $gmepoch + (7200 * $tz);
if ( $calcDelta ) {
$midnight = gmmktime(0, 0, 0);
$delta = $time - $midnight;
if ($delta >= 0 && $delta < 86400)
{
return $lang['datetime']['Today'] . gmdate('H:i', $time);
}
else
if ($delta < 0 && $delta > - 86400)
{
return $lang['datetime']['Yesterday'] . gmdate('H:i', $time);
}
}
$pre_format = @gmdate($format, $time);
if ( empty($translate) && $board_config['default_lang'] != 'english' )
{
@reset($lang['datetime']);
while ( list($match, $replace) = @each($lang['datetime']) )
{
$translate[$match] = $replace;
}
}
// alter code für Datum und Uhrzeit Anzeige mit heute / gestern format ohne Sommer- Winterzeit
// return ( !empty($translate) ) ? strtr($pre_format, $translate) : $pre_format;
return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * ($tz+date("I", $gmepoch)))), $translate) : @gmdate($format, $gmepoch + (3600 * ($tz+date("I", $gmepoch))));
}
//
// Ende Anzeige Heute - Gestern Mod
Das bewirkt zwar dass oben auf der index_bod.tpl bei aktuellem Datum und Uhrzeit die richtige Zeit angezeigt wird aber überall wo das Heute Gesten steht wird noch immer die alte Sommerzeit angezeigt.
Warum? Ich habe meine Änderung doch genau in diesem Code gemacht.
Ich habe in der Administration und meinem Profil GMT+1 eingestellt.
Verfasst: 06.12.2007 11:48
von mark2
Wenn ich den Wert 7200 in der Zeile auf 3600 ändere erhalte ich auch hinter dem heute/gestern Datum die richtige Uhrzeit
Nun ist mir aufgefallen dass wenn man sich zwischen 0 und 1 Uhr anmeldet der heute gestern mod nicht mehr funktioniert. Es wird dann bis 1 Uhr das ganz normale Datum angezeigt und erst nach 1 Uhr erscheint heute. Der Today/yesturday mod schaltet also 1 Stunde zu spät auf den neuen Tag um.
Woran liegt das und wie behebe ich es?
Verfasst: 06.12.2007 13:06
von 4seven
Hallo mark2,
Lösung für das "0-1 Uhr + Winterzeit/Sommerzeit-Problem":
Öffne
/includes/page_header.php
Finde
Code: Alles auswählen
//
// GET THE TIME TODAY AND YESTERDAY
//
$today_ary = explode('|', create_date('m|d|Y', time(),$board_config['board_timezone']));
$board_config['time_today'] = gmmktime(0 - $board_config['board_timezone'] - $board_config['dstime'],0,0,$today_ary[0],$today_ary[1],$today_ary[2]);
$board_config['time_yesterday'] = $board_config['time_today'] - 86400;
unset($today_ary);
// MOD - TODAY AT - END
Ersetze mit
Code: Alles auswählen
//
// GET THE TIME TODAY AND YESTERDAY
//
$today_ary = explode('|', create_date('m|d|Y', time(),$board_config['board_timezone']));
// Anfang Aenderung //
$zeit = localtime(time() , 1);
if ($zeit[tm_isdst]==1)
{
//Sommerzeit
$board_config['time_today'] = gmmktime(0 - $board_config['board_timezone'] - $board_config['dstime'] - date('I'),0,0,$today_ary[0],$today_ary[1],$today_ary[2]);
}
if ($zeit[tm_isdst]==0)
{
// Winterzeit
$board_config['time_today'] = gmmktime(0 - $board_config['board_timezone'] - $board_config['dstime'],0,0,$today_ary[0],$today_ary[1],$today_ary[2]);
}
// Ende Aenderungen //
$board_config['time_yesterday'] = $board_config['time_today'] - 86400;
unset($today_ary);
// MOD - TODAY AT - END
lg
4seven
Verfasst: 06.12.2007 22:57
von mark2
also ich kann in der page_header.php deinen angegebenen code nicht finden. Es sind nicht einmal Stück davon in meiner. Das 'time_today' gibt es bei mir nicht.
Zu Punk 2
gleiches Problem. Kann den code vor und nach deiner Änderung nicht finden. Ich gehe mal davon aus dass das in der function.php sein soll habe aber auch die page_header danach durchsucht. ohne Erfolg.
Habe diesen Heute gestern mod verwendet.
Link
Wenn ich mir den letzten Beitrag von tts in diesem Thema ansehe ist das Problem auch ohne sommer winterzeit da und sogar noch schlimmer. Bei ihm wird das heute gestern um 2 Stunden verschoben. Eben die 7200=2 Stunden die ich nach dem Sommerzeit mod in 3600=1 Stunde geändert habe.
Und für Sommer Winterzeit diesen
code was ich dann so wie man oben im ersten Posting sehen kann kombiniert habe.
Verfasst: 07.12.2007 04:57
von 4seven
Hallo mark2,
ich meinte
den hier.
Der funktioniert mit der oben angegebenen Änderung 1A-Astabohne und das auf mehreren Boards.
Ich hatte zwar einige andere "Yesterday@/Today@Mods" probiert, aber da war meist der Wurm drin.
Außerdem ist diese Version sparsamer und ratzfatz eingebaut.
Ich hab meine Änderung oben angepasst (war etwas missverständlich)
und eine angepasste
(sowie eingedeutschte) Version
hochgeladen
lg
4seven
Verfasst: 08.12.2007 19:18
von mark2
Nun der mod zeigt das Heute / Gesten aber nur für Themen und Beiträge an. Beim letzten Login (last visit) passiert nichts. Der mod den
ich bis jetzt hatte gefiel mir da schon besser. Schade dass er nicht richtig funktioniert und 1 bzw 2 Stunden verspätet die Anzeige bringt. Wird anscheinend auch nicht supported.
Verfasst: 08.12.2007 23:59
von 4seven
Hallo mark2,
mark2 hat geschrieben:Nun der mod zeigt das Heute / Gesten aber nur für Themen und Beiträge an.
Dafür aber perfekt
mark2 hat geschrieben:Beim letzten Login (last visit) passiert nichts.
An der Stelle halt ich es persönlich nicht für wichtig. Der Mod ließe sich aber bestimmt dafür anpassen.
Dürfte nicht kompliziert sein, doch fehlt mir dafür i.A. die Zeit.
_____________________________
Edit -> Hier ein Ansatz <-
In der
sessions.php
und der
pageheader.php
finden sich zwar auch Anweisungen von
last_visit und
user_lastvisit aber der Code wird wohl durch diese Anweisung ausgeworfen:
Öffne
usercp_viewprofile.php
Finde:
Code: Alles auswählen
'LASTLOGIN' => create_date($lang['DATE_FORMAT'], $profiledata['user_lastvisit'], $board_config['board_timezone']),
Wenn wer Lust hat, das auf Basis
dieses Mods so anzupassen ,
das da nicht
Letzter Login: 08.12.2007
sondern
Letzter Login: Gestern um xyz steht, dann mal ran.
lg
4seven
Verfasst: 11.12.2007 01:21
von mark2
Genial. Ich habe es hin bekommen.
Dein code (mod) läuft bei mir jetzt zusammen mit dem last visit mod zusätzlich auf den Seiten membelist.php, usercp_viewprofile.php
In der page_header.php habe ich auch noch nachgebessert so dass bei "Dein letzter Besuch war am:" auch "Heute" bzw "Gestern" steht
Es wird Punkt 0:00 Uhr auf "Heute" bzw "Gestern" umgeschalten.
Jedenfalls baue ich den alten today mod wieder aus und nehme deinen.
Ob das dann wirklich alles passt wird sich erst im Frühjahr zeigen wenn die Uhr wieder auf Sommerzeit gestellt wird.
Verfasst: 12.12.2007 05:32
von 4seven
Hallo mark2,
freut mich das es funktioniert.
Magst du mir verraten, welche Änderungen an welchen Dateien du vorgenommen hast, damit...
Code: Alles auswählen
bei "Dein letzter Besuch war am:" auch "Heute" bzw "Gestern" steht
??
lg
4seven
Verfasst: 12.12.2007 17:54
von mark2
Das habe ich in der page_header.php mit diesem code hin bekommen.
Code: Alles auswählen
#
#-----[ FIND ]------------------------------------------
#
$s_last_visit = ( $userdata['session_logged_in'] ) ? create_date($board_config['default_dateformat'], $userdata['user_lastvisit'], $board_config['board_timezone'], true) : '';
#
#-----[ AFTER, ADD ]-----------------------------------
#
//
// MOD - TODAY AT - BEGIN
//
if ( $board_config['time_today'] < $userdata['session_logged_in'] + $userdata['user_lastvisit'])
{
$s_last_visit = sprintf($lang['Today_at'], create_date($board_config['default_timeformat'], $userdata['user_lastvisit'], $board_config['board_timezone']));
}
else if ( $board_config['time_yesterday'] < $userdata['session_logged_in'] + $userdata['user_lastvisit'])
{
$s_last_visit = sprintf($lang['Yesterday_at'], ( $userdata['session_logged_in'] ) ? create_date($board_config['default_timeformat'], $userdata['user_lastvisit'], $board_config['board_timezone'], true) : '');
}
// MOD - TODAY AT - END
Aber ohne Garantie! das mit dem + $userdata['user_lastvisit'] habe ich nur durchs probieren herausgefunden. Kein Plan was das macht aber es funzt. zumindes momentan.