Ben UMARIM herhangi bir kütüphane kullanmadan (sunucu olarak ne olursa olsun zaman dilimi itibaren) UTC bir tarih zaman damgası dönüştürmek için kolay bir yol ihtiyacı duyuyorum.
getTimezone and setTimezone, örneğe bakın deneyin
(Ama bu bir sınıf kullanır)
GÜNCELLEME:
Herhangi sınıfları olmadan böyle bir şey deneyebilirsiniz:
$the_date = strtotime("2010-01-19 00:00:00");
echo(date_default_timezone_get() . "<br />");
echo(date("Y-d-mTG:i:sz",$the_date) . "<br />");
echo(date_default_timezone_set("UTC") . "<br />");
echo(date("Y-d-mTG:i:sz", $the_date) . "<br />");
NOT: Siz de geri orijinal dilimini ayarlamanız gerekebilir
If you have a date in this format YYYY-MM-HH dd:mm:ss, you can actually trick php by adding a UTC at the end of your "datetime string" and use strtotime to convert it.
date_default_timezone_set('Europe/Stockholm');
print date('Y-m-d H:i:s',strtotime("2009-01-01 12:00"." UTC"))."\n";
print date('Y-m-d H:i:s',strtotime("2009-06-01 12:00"." UTC"))."\n";
Bu, bu yazacaktır:
2009-01-01 13:00:00
2009-06-01 14:00:00
Gördüğünüz gibi ve de yaz saati sorunu halleder.
Bunu çözmek için .... :) Biraz garip bir şekilde
strtotime, belirli bir giriş biçimi gerektirdiği gibi, DateTime::createFromFormat kullanılabilir (php 5.3+ is required)
// set timezone to user timezone
date_default_timezone_set($str_user_timezone);
// create date object using any given format
$date = DateTime::createFromFormat($str_user_dateformat, $str_user_datetime);
// convert given datetime to safe format for strtotime
$str_user_datetime = $date->format('Y-m-d H:i:s');
// convert to UTC
$str_UTC_datetime = gmdate($str_server_dateformat, strtotime($str_user_datetime));
// return timezone to server default
date_default_timezone_set($str_server_timezone);
http://php.net/manual/en/function.strtotime.php ya da bunun yerine bir dize ama zamanı bileşenleri kullanmak gerekiyorsa, o zaman http://us.php.net/manual/en/function.mktime.php
PHP 5 veya üstün ile, datetime::format function kullanabilir (belgelerine bakın http://us.php.net/manual/en/datetime.format.php)
echo strftime( '%e %B %Y' ,
date_create_from_format('Y-d-m G:i:s', '2012-04-05 11:55:21')->format('U')
); // 4 May 2012