mktime - Zwei Stunden falsch

P

P_F

Hallo,

Ich habe eine kleine Klasse geschrieben, die mir aus einem in Reinform gegebenen Datum einen Timestamp generiert (mittels mktime):

PHP:
<?php

/**
 * @author     P_F
 * @category   Optima CMS
 * @package    core
 */
 
 class core_DateTime {
 
 	/**
 	 * returns a unix timestamp
 	 * @param $date	Date, format: DD.MM.YYY
 	 * @param $time 	Time, format: HH:MM
 	 * @return 			int
 	 */
 	public static function convert_to_timestamp($date = "", $time = "")
 	{
 		
 		if ( count($explode_date = explode(".", $date)) == 3 )
 		{
 			if ( count($explode_time = explode(":", $time)) == 2 )
 			{
 				$explode_date = array_map("intval", $explode_date);
 				$explode_time = array_map("intval", $explode_time);
 				
 				return gmmktime(
					$explode_time[0],
					$explode_time[1],
					0,
					$explode_date[1],
					$explode_date[0],
					$explode_date[2]
				);
 			}
 			else
 				return  gmmktime(
							0, 
							0, 
							0, 
							$explode_date[1],
							$explode_date[0],
							$explode_date[2]
						);
 		}
 		else
 			return -1;
 	}
 }

?>

Zum Test (offline, XAMPP):
PHP:
<?php
 $timestamp = core_DateTime::convert_to_timestamp("25.5.2008", "15:35");
 print date('d.m.y, G:i', $timestamp); // liefert 25.05.08, 17:35
?>

Woher kommen die zwei Stunden?
 
Würdest du wirklich mktime verwenden hättest du vermutlich kein Problem.
Du verwendest aber gmmktime.
Der Unterschied... siehe PHP Doku

lg
Andreas
 
Diese zwei Stunden Unterschied ist die Zeitdifferenz zwischen der Greenwich Mean Time und unserer Zeitzone plus Sommerzeit.
 
Zudem ist es vollkommen sinnfrei eine Klasse zu schreiben, die nur eine einzige Methode enthält. Klassen sind nur dann sinnvoll, wenn man mehrere Funktionen hat, die mit den selben Daten arbeiten sollen. Hat man allerdings nur eine Funktion oder mehrere Funktionen, die zwar zu einem Bereich (z.B.: Dateioperationen) gehören, aber sonst nichts miteinander am Hut haben, sollte man diese zwar in einer Datei, wie die allseits bekannte functions.php ablegen, diese Funktionen aber nicht zu einer Klasse bündeln. OOP ist zwar oftmals die beste Lösung, allerdings eben nicht immer.
MfG, Andy
 
Zurück