2016-01-20 16 views
7

3 gün boyunca bunu başarıya ulaşmadan çözmeye çalışarak geçirdim. MongoDB PHP Kitaplığı'nı kullanıyorum ve PHP Dokümanlar'daki örneği kullanarak geçerli bir tarihte bir zaman damgasını dönüştürmeye çalışıyorum ancak her zaman 1970-01-17.php ve mongodb tarihine kadar olan zaman bilgisi.

kodudur:

$utcdatetime = new MongoDB\BSON\UTCDateTime(1453939200); 

    $datetime = $utcdatetime->toDateTime(); 

    var_dump($datetime); 

cevap

11

documentation devletler yapıcı, sen dolayısıyla saniye geçersiz tarih sonuç bir zaman damgası sağlıyoruz milisaniye cinsinden zaman damgası temsil eden bir tamsayı parametresinde aldığı.

Çarp 1000'e değeri milisaniye olarak zaman damgası böylece dönüştürülmüş geçerli bir tarih saat nesneyi döndürmek için: bir zaman damgası ve bundan sonra değerini dönüştürmek için Önce vardır: Bu arayanlar için

$timestamp = 1453939200 * 1000; 
$utcdatetime = new MongoDB\BSON\UTCDateTime($timestamp); 

$datetime = $utcdatetime->toDateTime(); 

var_dump($datetime); 
+0

Merhaba chridam, cevap için teşekkürler ama şimdi tarih olarak 1969/12/08 05:14:47 alıyorum. Bir fikrin neden? –

+2

Bu, milisaniye cinsinden bir zaman damgası kadar büyük sayıları işleyemeyen bir PHP'nin 32 bit sürümünü çalıştırıyor gibi görünüyor. Görünüşe göre bir DateTime istediğinden beri ya 64-bit PHP çalıştıran ya da bu Mongo nesnesini kullanmanın bir çözümü yok. '$ foo = yeni DateTime(); $ Foo-> setTimestamp (1453939200); var_dump ($ foo); – Sammitch

+0

Buradaki @Sammitch ile aynı fikirdeyim. – chridam

0

Bunu geçerli bir ISODate'e dönüştürebileceksiniz. Ör:

$utcdatetime = new MongoDB\BSON\UTCDateTime(strtotime($date)); 
    $date2 = new MongoDB\BSON\Timestamp(1, date($utcdatetime)); 
+1

UTCDateTime, milisaniye tabanlı zaman damgasını parametre olarak alır; strtotime, ikinci tabanlı zaman damgasını döndürür. http://php.net/manual/en/class.mongodb-bson-utcdatetime.php – Weboide

İlgili konular