2017-03-06 4 views
0

Ich benutze einen Code, um zu finden, wie viele Tage seit dem neuen Jahr (1. Januar) vergangen sind. Ich benutze diesen Code:PHP datediff Februar Ausgaben

$newyear = new DateTime("2017-01-01"); // January 1, 2017. 
$today = new DateTime(); // March 6, 2017. 
$difference = $newyear->diff($today); 

Nun, wenn ich diesen Code verwenden, zeigt es die richtige Anzahl der Tage,

echo $difference->format("%a days"); // 64 days 

aber wenn ich ein anderes Format verwenden, geht es schief.

echo $difference->format("%m months %d days"); // 2months 2 days. 

Ich gehe davon aus, dies zu PHP Zählen Februar als 31 Tage lang fällig ist, so technisch ist es 31 + 31 + 2 Tage. Ich möchte, dass der Februar 28 oder 29 Tage lang ist, abhängig von der Schaltjahr-Bedingung. Ich denke, da muss etwas in der php.ini stehen. Was und wo zu ändern oder gibt es einen Hack?

+0

Sache von der anderen Seite: Was sollte 'format()' tun, wenn '"% m Monate% d Tage "' angegeben wird. Dieser '1 Monat mit 28 Tagen 1 Monat mit 29 Tagen 2 Tagen' ?? Sie müssen es von Hand zählen und es selbst formatieren :-) – JustOnUnderMillions

+0

es funktioniert gut: - https://eval.in/748856 –

+0

@Anant Ich habe '2 Monate 2 Tage' auch, scheint, dass einige Konfiguration an Ort und Stelle kommt . Ignoriere meinen ersten Kommentar. :-) – JustOnUnderMillions

Antwort

0

Um dieses Problem mit PHP zu beheben, das den Unterschied zwischen 2 Daten falsch meldet, müssen wir zuerst ein paar Dinge überprüfen.

Ich sehe ein paar Leute gemischte Ergebnisse bekommen, dies herauszufinden, zu debuggen versuchen, welche Version des timezonedb Sie

<?php 
echo timezone_version_get(); 
?> 

http://php.net/manual/en/function.timezone-version-get.php

Die PECL timezonedb Website gefunden bei https://pecl.php.net/package/timezonedb

haben können

Überprüfen Sie, ob Sie die aktuellste Version haben.

+1

Dies löst mein Problem. Vielen Dank. Genau das habe ich gesucht. Mein Upvote wird aufgrund niedriger Reputationspunkte nicht angezeigt. –

+1

@doing_something_wonderful Sie können das als Antwort markieren. – JustOnUnderMillions

+0

Bitte upvote diese Leute –