Timestamp 13 saat ekle

5 Cevap php

Ben gibi damgası değerleri bir tablo var:

    2009-07-14 02:00:00

Ben gibi ilave 13 saat ile zamanında bunları görüntülemek gerekir:

    2009-07-14 15:00:00

PHP bunu yapmak için basit yolu nedir?

5 Cevap

Ben biliyorum

date( "Y-M-d H:i:s", strtotime( $timestamp_from_array ) + 13 * 3600 );

koklamak, ama size bir fikir verecektir.

strtotime sonra saat ekleyip date fonksiyonu ile dizideki damgası biçimine dönüştürmek, bir zaman damgası değerine damgası dize dönüştürür.

Ama gerçekten ne istediğinizi time zones kullanmak olduğunu varsayalım.

Edit: igstan is correct, you should also mind the daylight saving time changes between those offsets.

Zaman hesaplamalarında temel aritmetik kullanarak Saat Dilimleri ve Yaz Saati ile ilgili sorunlar bir sürü vardır. En iyi çözüm strtotime() veya mktime() gibi PHP'nin kendi tarih / zaman işlevleri, itimat etmektir. I DST problems on my blog hakkında yazdı.

echo date('Y-M-d H:i:s', strtotime('2009-07-14 02:00:00 + 13 hours'));

Bu veritabanı çıkar gibi eklentiyi yapabilir misin?

SELECT ... DateAdd(hh, 13, DateField) AS DateField

(SQL Server)

you could use http://de3.php.net/manual/en/function.strptime.php to convert it to a unix timestamp. Then you could easily add 13*60*60 to that and use http://de3.php.net/manual/en/function.date.php to convert it back to a timestamp as you like.

anotehr yolu patlayabilir fonksiyonu üzerinden olurdu, ama ben bakmak zorunda çünkü bu daha karmaşık olabileceğini düşünüyorsanız gün / ay / yıl değişim ve malzeme

Sen damgaları ile bir tablo var? SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');: Bir MySQL veritabanı varsa, sadece addtime kullanarak veritabanında bu yapabilirdi

Eğer PHP Zend Framework kullanıyorsanız, sizin gibi bir şey olabilir:

 $date=new Zend_Date(Array('year'=>$iYear,'month'=>$iMonth,'day'=>$iDay));
 // changes $date by adding 12 hours
 $date->add('12:00:00', Zend_Date::TIMES);

Alternatively, you could do it using native PHP4 functions such as: [faster, less accurate: doesn't account for leap seconds/time zone changes etc]

$datestamp=strtotime('2009-07-14 02:00:00'); // It'll probably be better using mktime
$datestamp=$datestamp+(60*60*13); // 60 seconds times 60 minutes times 13 hours

or [slower, more accurate]

  $datestamp = strtotime('2009-07-14 02:00:00'); // It'll probably be better using mktime
  $newDate = date('Y-m-d H:i:S', mktime(date('H',$datestamp)+13, date('i',$datestamp), date('s',$datestamp), date('m',$datestamp), date('d',$datestamp), date('Y',$datestamp)));

ya, sen Datetime işlevleri kullanarak PHP 5 kullanıyorsanız

$date = new DateTime('2009-07-14 02:00:00');
date_add($date, new DateInterval("P13H"));