UTC php dönüştürmek datetime

9 Cevap php

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.

9 Cevap

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

strtotime (yerel saat olarak yorumlanır) verilen dizeden bir zaman damgası oluşturmak ve geri biçimlendirilmiş UTC tarih olarak almak için gmdate kullanın kullanın.

Example

Istendiği gibi, burada basit bir örnek:

echo gmdate('d.m.Y H:i', strtotime('2012-06-28 23:55'));

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

Bu şekilde yapın:

gmdate('Y-m-d H:i:s', $dateToFormat)

ya da sadece

gmdate('Y-m-d H:i:s')

UTC "ŞİMDİ" almak için.

Başvuru edin:

http://www.php.net/manual/en/function.gmdate.php

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);

Ben bazen bu yöntemi kullanın:

// It is not importnat what timezone your system is set to.
// Get the UTC offset in seconds:
$offset = date("Z");

// Then subtract if from your original timestamp:
$utc_time = date("Y-m-d H:i:s", strtotime($original_time." -".$offset." Seconds"));

Her zaman çalışır.

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

denemek

echo date ('F d Y', strtotime ('2010-01-19 00:00:00 '));

çıktısı:

19 Ocak 2010

Diğer çıkış görmek için biçim zamanı değiştirmek gerekir

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