php: Bugüne kadar milisaniye dönüştürmek

3 Cevap php

Ben Unix dönemi bu yana geçen milisaniye sayısı olarak temsil edilen bir tarih, eşit bir dize var.

Ben D-m-Y içine çıktı o çalışıyorum.

Ben verildi dizesi "1227643821310" oldu, ve ben sonuç 2-12-2008 eşit olması gerektiğini söyledi, ama ben 25-11-2008 bir sonuç elde tutmak

Aşağıdaki gibi benim kod:

$mil = 1227643821310;
$seconds = $mil / 1000;
echo date("d-m-Y", $seconds);

Herhangi bir bu olabilir neden olarak fikir?

3 Cevap

Zaten sağ, 1227643821 gerçekten 25-11-2008, sade 02-12-2008 değildir bunu yapıyor.

Aklıma tek şey bir tarihe dönüştürmeden önce ondalık kısmı yuvarlama deneyin. Bu sonuç değişmezse, o zaman doğru sonuçtur.

Jeff damgaları ile uğraşırken anlamak için önemli şey: Onlar 00:00:00 01.01.1970 gelen geçti zaman temsil in GMT, değil zaman dilimi içinde (eğer GMT kendin sürece, tabii ki) .

1227643821 gerçekten 20:10:21 25.11.2008 GMT saati temsil eder.

Bu ancak zaten 26 Kasım bulunuyor (çünkü yaz saati ve yaz aylarında Moskova timezone kendisi) Moskova'nın doğusundaki saat dilimleri, dünyanın çoğu bölgesinde 25 Kasım 2008 olduğunu. En "uç" doğu zaman dilimi GMT +14 olduğundan, 1227643821 zaman damgası daha sonra 26 bir tarihi temsil edebilir dünyada yer yok.

Dilimleri ile uğraşırken asıl değerinin yazarı şekilde yanılmış olabilir. Ya da sadece düz yanlış. Değer hesaplanırken Örneğin, bazı aşamada yerine milisaniye saniye ekledi.