2016-05-04 12 views
2

Ich brauche eine Funktion, die die Anzahl der Tage seit 1.1.1970 zurückgibt, aber abhängig von der Zeitzone. Ich schrieb die folgende Funktion, aber fragte mich, ob es einen besseren Weg gibt, es zu tun (eine bessere Möglichkeit, den Offset von GMT zu bestimmen wäre eine gute Sache).Gibt es einen besseren Weg, um die Tage seit 1.1.1970 zu bekommen

function getDaysSinceUnix($time = null){ 
    if($time === null){$time = time();} 
    $day = 24*60*60; 
    $offset = intval(substr(date('O'),0,-2))*60*60; 
    return intval(floor(($time+$offset)/$day)); 
} 

Wenn nicht, gibt es etwas, das Sie hinzufügen würden, das dieser Funktion mehr Stabilität geben könnte?

+0

Eigentlich werde ich Ihre Funktion leihen, um meine zu ersetzen. –

+0

@ JoseManuelAbarcaRodríguez Ahahaha naja ich bin sehr froh, dass ich Ihnen helfen konnte, ich hätte nie gedacht, dass jemand meinen Code benutzen würde: D – Feirell

Antwort

2

Mit DateTime:

function getDaysSinceUnix($time = 0, $timeZone = Null) 
{ 
    $time = "@$time"; 
    $tz = new DateTimeZone($timeZone ?: date_default_timezone_get()); 
    return date_create($time)->setTimeZone($tz)->diff(date_create('1970-01-01', $tz))->days; 
} 

Wenn keine Zeitzone geführt wird, aktuelle Zeitzone verwendet wird.

+0

Es könnte ein Problem geben, wenn ich den Parameter 'time() + 60 * 60 * verwende 2 'für Ihre Funktion gibt es '16925' zurück, aber in meiner Zeitzone ist es 22:13, also sollte es' 16926' zurückgeben, also ist es eine Stunde aus, weil 'time() +60 * 60 * 3' zu' 16926' führt. Weißt du, warum das so ist? – Feirell

+0

Was ist Ihre TimeZone? – fusion3k

+0

GMT + 0200 (Deutschland/Berlin) – Feirell

0

Die Carbon-Bibliothek ist so ziemlich der Goldstandard für PHP-Datum/Uhrzeit.

Carbon\Carbon::createFromTimestamp(0)->diffInDays(); 
+0

Ok, das scheint nett, aber ich möchte wirklich nicht eine Bibliothek nur für diese eine Porte verwenden, aber danke für Ihre Alternative. – Feirell

+0

@Feirell Libraries neigen dazu, mit all den seltsamen Edge Cases fertig zu werden, haben minimale Auswirkungen auf die Performance, sind unglaublich einfach über Composer zu installieren und zu managen und, wie Sie sehen, sauberer und besser verständlicher Code. Bis zu dir, letztendlich. – ceejayoz

+0

Mhh ja du hast Recht, das wäre ein Vorteil. Aber mit einer Bibliothek werde ich nichts lernen (und das ist ein privates Projekt), also ist ein Selfmade die Idee :) – Feirell

Verwandte Themen