PHP / MySQL zaman 4 saat nasıl eklenir

7 Cevap php

Ben Wordpress için özel inşa blog blog göç üzerinde çalışıyorum. Wordpress veritabanında arıyor alanlardan biri 4 saat öncesinde bizim zaman olduğu GMT'ye göre bir tarih / zaman damgası kümesidir. Ve buna dört saat eklemek Yani temelde bizim tarih / zaman damgası (: DD SS YYYY-AA-GG SS) almak gerekir. Ben MySQL komut "AddTime" bakıyordu, ama ben sadece ekler üzerinde, seçtiği üzerinde çalıştığını düşünüyorum.

Ben parça için tarih patladı bir komut kadar çalıştı ve zaman 4 saat ilave, ancak 4 saat ertesi gün / ay / yıl olarak iter zaman kontrol etmek için gerekli olacaktır eden mantık biraz aşırı gibiydi .

7 Cevap

Ne hakkında:

date( "Y-m-d H:i:s", strtotime( "2009-08-09 23:44:22" )+4*60*60 )

ya da

date( "Y-m-d H:i:s", strtotime( "2009-08-09 23:44:22 + 4 hours" ) )

Hata denetimi biraz gerekebilir, ancak sorunu çözmek gerekir.

Veya SQL daha iyi

DATE(DATE_ADD(`Table`.`Column`, INTERVAL 4 HOURS))

It looks like the TZ of your database is set to GMT (UTC), which is as it should be. You need to convert your local date into GMT when adding to the database.

MySQL 5.1 Reference Manual:

CONVERT_TZ(dt,from_tz,to_tz)

CONVERT_TZ () to_tz tarafından verilen zaman dilimine from_tz tarafından verilen bir zaman diliminde bir datetime değeri dt dönüştürür ve sonuç değerini döndürür. , "MySQL Server Saat Dilimi Desteği" Bölüm 5.10.8 açıklandığı gibi zaman dilimleri belirtilebilir. Argümanlar geçersiz ise bu işlev NULL döndürür.

Değeri TIMESTAMP type UTC fom from_tz dönüştürüldüğünde, hiçbir dönüşüm gerçekleşir, desteklenen aralığın dışına düşerse. TIMESTAMP aralık Bölüm 11.1.2, "Tarih ve Zaman Türleri Genel Bakış" açıklanmıştır.

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
        -> '2004-01-01 13:00:00'

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
        -> '2004-01-01 22:00:00'

DATE_ADD kullanarak tüm cevapları için doğru sözdizimi (en azından MySQL geçerli sürümünde) "4 SAAT" değil "4 SAAT" dir:

UPDATE table SET field = DATE_ADD(field, INTERVAL 4 HOUR);

Eğer aşağıdaki gibi (gün / ay / yıl) [Brezilyalı tarih formatını] kullanırsanız, bu işe yaramazsa:

$ Todays_date = date ("d/m / Y, H: i: s");

"Server tarih / saat" echo. $ Todays_date;

echo "Server date/hour + 2 hours ".date("d/m/Y H:i:s", strtotime("$todays_date + 2 hours"));

Result:

Server date/hour10/04 / 2012 07:44:36

Server date/hour + 2 saat 04/10 / 2012 09:44:36


Sen (ay / gün / yıl) ve mükemmel çalışır gerekir:

$ Todays_date = date ("m/d / Y, H: i: s"); "Server tarih / saat" echo.

. $ Todays_date "
"; echo ""Server date/hour + 2 hours ".date("m/d / YH: i: s", strtotime ("$ todays_date + 2 saat"));

Result:

Server date/hour04/10 / 2012 07:44:36

Server date/hour + 2 saat 04/10 / 2012 09:44:36

Ben bu yöntemi kullanmış:

$format = Y-m-d; //you can use any format if you want
$date = $row['date']; // from mysql_fetch_array
$date2 = date($format, strtotime("$date + 4 week"));
echo $date;