Seite 1 von 1

Heute/Gestern Mod, falsche Zeit

Verfasst: 10.04.2007 23:44
von Gooof
Hi,

ich hab ein Problem mit dem Heute/Gestern Mod. Wo also beim Beitrag nicht das Datum + Uhrzeit steht sondern wenn es Heute geschrieben wurde steht da: Heute - 12:12 Uhr

Mein Problem ist jetzt nur das dort nicht 12:12 Uhr steht sondern 10:12 Uhr.
Also die Zeit geht 2 Stunden falsch.

So jetzt kommst, hier ist der Code zum einbau des Mods:

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------
#
includes/functions.php

#
#-----[ FIND ]------------------------------------------ 
#
	return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : @gmdate($format, $gmepoch + (3600 * $tz));

# 
#-----[ REPLACE WITH ]-----------------------------------
#

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

	$thetime = ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : @gmdate($format, $gmepoch + (3600 * $tz));
	
	$L_Today = 'Today';
	$L_Yesterday = 'Yesterday';
	$time_format = " - h:i a";// - 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 \\*******************************

Durch die Sommer und Winderzeit umstellung hab ich aber folgende Zeile eingebaut:

Code: Alles auswählen

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

Warum geht das aber mit dem Heute Mod nicht. :roll:

Danke schonmal!

cU

Verfasst: 14.04.2007 10:24
von BigKiller
ja hehe ich habe das gleiche problem bei mir zeigt er eine stunde zu früh an also bei mir steht (9:10 uhr) aber es ist 10:10 uhr gewesen :D

Verfasst: 14.04.2007 15:06
von S2B
Ich habe gerade - angespornt durch den eher weniger guten Code dieses MODs - eine alternative Lösung für eins meiner Projekte geschrieben, vielleicht hilft euch das weiter:

Code: Alles auswählen

	$gmepoch_timezone = (3600 * ($tz + date('I')));

	if ($simple_date && isset($lang['date_formats'][$format]))
	{
		$day = @gmdate('z', $gmepoch);
		$year = @gmdate('Y', $gmepoch);
		
		$today = @gmdate('z');
		$yesterday = @gmdate('z', time() - 86400);
		$current_year = @gmdate('Y');

		if ($day == $today && $year == $current_year)
		{
			$date = @gmdate($lang['date_formats'][$format], $gmepoch + $gmepoch_timezone);
			$date = sprintf($date, $lang['Today_time']);
		}
		else if ($day == $yesterday && ($year == $current_year || ($today == 0 && $year == $current_year - 1)))
		{
			$date = @gmdate($lang['date_formats'][$format], $gmepoch + $gmepoch_timezone);
			$date = sprintf($date, $lang['Yesterday_time']);
		}
	}

	if (empty($date))
	{
		$date = @gmdate($format, $gmepoch + $gmepoch_timezone);
	}

	return (isset($translate)) ? strtr($date, $translate) : $date;
(Keine Garantie auf Richtigkeit)

Verfasst: 20.04.2007 02:01
von krümelmonster
Danke S2B

will aber nicht , habe das gleiche Problem wie @BigKiller

keiner einen Tip ? functions.php

Code: Alles auswählen

	}

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

}
//-- mod : today at   yesterday at ------------------------------------------------------------------------ 
//-- add 
// 
// Create date/time/day from format and timezone 
// 
function create_date_day($format, $gmepoch, $tz) 
{ 
   global $board_config, $lang; 

   $date_day = create_date($format, $gmepoch, $tz); 
    if ( $board_config['time_today'] < $gmepoch) 
    { 
       $date_day = sprintf($lang['Today_at'], create_date($board_config['default_timeformat'], $gmepoch, $tz)); 
    } 
      else if ( $board_config['time_yesterday'] < $gmepoch) 
    { 
       $date_day = sprintf($lang['Yesterday_at'], create_date($board_config['default_timeformat'], $gmepoch, $tz)); 
    } 
    
   return $date_day; 
} 
//-- end mod : today at   yesterday at ------------------------------------------------------------------------ 
//
Krümelmonster

Verfasst: 21.04.2007 22:56
von Falk R110
Hallo!

Bei mir ist es das gleiche. Due Uhrzeit des Beitrages ist 2 Stunden hinterher. Leider scheint aber wohl niemand eine Lösung bisher dafür gefunden zu haben, oder?

Würde mich auf jedenfall freuen, wenn mir/uns jemand mit Rat und Tat zu Seite stehen würde.

Schöne Grüsse
Falk

Verfasst: 22.04.2007 13:11
von S2B
Tritt der Fehler denn auch bei meinem Code auf?

Verfasst: 22.04.2007 16:56
von Falk R110
S2B hat geschrieben:Tritt der Fehler denn auch bei meinem Code auf?
Ja tut er, zumindestens bei mir.

Aber ich hab irgendwie das Problem gelöst bekommen.

Hier mal der Ausschnitt aus der function.php:

Code: Alles auswählen

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

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

	$L_Today = 'Heute';
	$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 + (3600 * ($tz+date("I"))));
	$forum_date_month = @gmdate ("m", $gmepoch + (3600 * ($tz+date("I"))));
	$forum_date_year = @gmdate ("Y", $gmepoch + (3600 * ($tz+date("I"))));

	if ($forum_date_today == $today && $forum_date_month == $month && $forum_date_year == $year)
		$thetime = $L_Today . @gmdate ($time_format, $gmepoch + (3600 * ($tz+date("I"))));//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 + (3600 * ($tz+date("I"))));//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 + (3600 * ($tz+date("I"))));//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 + (3600 * ($tz+date("I"))));//yesterday
	}

   	return ($thetime);
//end friendly date \\*******************************
Hoffe das funzt nicht nur bei mir.

Gruss
Falk

Nachtrag: Ok, die Zeit stimmt nun, allerdings steht auf der Startseite nun auch bei " Aktuelles Datum und Uhrzeit:" Heute statt das Datum. Ich weiß nicht ob es vielleicht auch schon vorher so war?!

Verfasst: 27.04.2007 07:15
von Gooof
Hammer, gerade hab ich deinen Code getestet, er geht!

Darf ich fragen was du geändert hast? Falls es bald bei der Winterumstellung nicht mehr stimmt. :wink:

Verfasst: 21.05.2007 16:27
von StarWolf3000
hab ihn auch probiert, funzt super, allerdings bekomm ich jetzt bei jedem Aufruf (egal ob Index, Viewforum oder Viewtopic) immer ein Popup mit nem Geburtstagsgruss (hab den Birthday Hack eingebaut)

also, egal was ich aufrufe, das Popup kommt überall, obwohls eigentlich nur 1x auftauchen müsste, und zwar direkt beim 1. Login nach dem Geburtstag

Verfasst: 24.05.2007 15:59
von metty84
habe auch schon länger den today yesterday mod eingeaut und die automatische sommer-winterzeiteinstellung gleich noch mit reingepackt war damals ganzschön arbeit den alle mods die mit dem datum arbeiten wie kalender oder birthdaymod und noch dutzende andere kommen mit dem veränderten datum nicht klar und da bleiben nur mögliche 2 lösungen über. entweder man schreibt alle mods so um das sie mit dem datum dan was anfangen können (extrem aufwändig) oder man überschreibt nicht die alte datefunktion(createdate) sondern setzt nur eine neue datefunktion darunter(createdate1) und diese enthält den gestern und heute mod

dan hat man zwei möglichkeiten wie das datum ausgegeben wird und muss nurnoch überall da wo das datum mit heute und gestern angezeigt werden soll das createdate mit createdat1 ersetzen.


mfg metty