date_default_timezone_set virker vel også på mktime !?
Ja men problemet er at det sætter alt have php fortagers sig på den tids zone.
Har lavet lidt ændringer i mit script
Denne funktion skulle meget gerne lave en bruger's input dato om til server tid.
protected function UserDateToServer($year, $month, $day, $hour, $min, $sek)
{
try
{
$userTimezone = new DateTimeZone($this->TimeZone);
$ServerTimezone = new DateTimeZone($this->ServerTimeZone);
$myDateTime = new DateTime($year."-".$month."-".$day." ".$hour.":".$min.":".$sek, $userTimezone);
$offset = $ServerTimezone->getOffset($myDateTime);
return $myDateTime->format('U') + $offset;
}
catch(Exception $e)
{
return time();
}
}
Denne skulle meget gerne lave en server tid om til en bruger tid
protected function toDate($format, $time)
{
$userTimezone = new DateTimeZone($this->UserTimeZone);
$ServerTimezone = new DateTimeZone($this->ServerTimeZone);
$myDateTime = new DateTime(date("Y-m-d H:i:s", $time), $ServerTimezone);
$offset = $userTimezone->getOffset($myDateTime);
echo date($format, $myDateTime->format('U') + $offset);
}
Det ser ud til at virke, men er stadig meget itvivl om den faktisk gør det rigtigt.
Den er vist gal.
Prøv med:
public function UserDateToServer($year, $month, $day, $hour, $min, $sec) {
try {
$myDateTime = new DateTime();
$myDateTime->setTimestamp(new DateTimeZone($this->TimeZone));
$myDateTime->setDate($year, $month, $day);
$myDateTime->setTime($hour, $min, $sec);
return $myDateTime->getTimestamp();
} catch(Exception $e) {
return time();
}
}
Ups.
public function UserDateToServer($year, $month, $day, $hour, $min, $sec) {
try {
$myDateTime = new DateTime();
$myDateTime->setTimezone(new DateTimeZone($this->TimeZone));
$myDateTime->setDate($year, $month, $day);
$myDateTime->setTime($hour, $min, $sec);
return $myDateTime->getTimestamp();
} catch(Exception $e) {
return time();
}
}
Anmeld misbrug
Og:
public function toDate($format, $time)
{
$myDateTime = new DateTime();
$myDateTime->setTimezone(new DateTimeZone($this->UserTimeZone));
$myDateTime->setTimestamp($time);
echo $myDateTime->format($format);
}
Tusind tak, mit hovede spinder stadig væk for at prøve at dette til at virke :D
Gider du skrive noget som et svar så du kan få dine venfortjænte point? :D
Hele pointen er at Unix tid er tidszone uafhængigt.
Bemærk at setTimestamp og getTimestamp kræver 5.3.
Og svar.
Hmm min host servage køre 5.2.x dog virker det fint der.