Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Lösung für den Fehler strtotime('- x Monat')

PHP-Lösung für den Fehler strtotime('- x Monat')

高洛峰
高洛峰Original
2016-11-22 17:16:181631Durchsuche

Bei der Entwicklung eines Projekts ist mir bei der Verwendung von strtotime("- 1 Monat") ein Fehler aufgefallen. Der Hauptgrund dafür ist, dass die von PHP festgelegte Standardzeit auf der Greenwich-Zeitzone basiert. Bei diesem Problem besteht die erste darin, die Standardzeitzone in php.ini zu ändern, und die zweite darin, sie im Programm festzulegen.

Lassen Sie uns zunächst über die erste Methode sprechen: Ändern Sie die Standardzeitzone in PHP. ini

In der integrierten Wamp-Umgebung, die ich verwende, dachte ich immer, dass die Standardzeitzone in bin/php/php5.5.12 geändert wurde, aber egal wie ich sie geändert habe, die Zeit in der Greenwich-Zeitzone war immer noch angezeigt, und ich konnte online keine entsprechende Lösung finden und später eine php.ini-Datei in bin/Apache/Apache2.4.9/bin finden. Stellen Sie die Zeitzone der Datei auf date.timezone = PRC und die Uhrzeit ein Die auf der Seite angezeigte Zeit entspricht meiner Systemzeit.

Die Einstellungsmethode besteht darin, die Zeitzone in der Datei php.ini auf die Zeit in unserer Region zu ändern. Wenn Sie beispielsweise date.timezone = PRC ändern, wird die Zeit auf die Zeit der Volksrepublik China eingestellt , das ist die aktuelle Zeit unseres Systems. Hinweis: Damit die von uns festgelegte Zeitzone wirksam wird, muss das vorangehende ;

Die zweite Methode besteht darin, date_default_timezone_set('PRC');

wie

date_default_timezone_set('PRC');/ /This hinzuzufügen Satz wird verwendet, um Zeitunterschiede zu beseitigen
$date = date("Y-m-d H:i:s");

echo $date; //Output

?>

Auf diese Weise können wir unsere aktuelle Uhrzeit ausgeben.

Wenn die Zeit 2016-03-31 ist und die obige Methode verwendet wird, um die Zeit des Vormonats zu erhalten, ist die ursprüngliche Idee immer noch 2016-03 Die Methode besteht darin, zunächst die Anzahl der Tage im Vormonat zu ermitteln und dann die Anzahl der Tage im Vormonat unter Verwendung der heutigen Zeit zu subtrahieren.

Im Folgenden finden Sie mehrere Methoden, mit denen wir die gewünschten Ergebnisse erzielen können. Ich möchte beispielsweise den Monat des letzten Monats zurückgeben:
echo date('Y-m', strtotime('midnight first Tag von -1 Monat'));
oder:
echo date('Y-m', strtotime(date('Y-m-01')) – 86400);

oder machen Sie das folgende Verarbeitung im Programm

date_default_timezone_set('Asia/Shanghai');
$first_day_of_month = date('Y-m',time()) '-01 00 :00:01' ;
$t = strtotime($first_day_of_month);
print_r(array(

date('Y Jahr m Monat',$t),
Datum(' Y Jahr m Monat' ,strtotime('- 1 Monat',$t)),
date('Y Jahr m Monat',strtotime('- 2 Monat',$t)),
));
?> ;

Das Prinzip dabei besteht darin, das Jahr und den Monat jedes Monats zu trennen und dann am Ende den Tag, die Stunde, die Minute und die Sekunde hinzuzufügen, sodass bei der Ausführung von strtotime( '- 1 Monat',$t) Operation, die Zeit des Vormonats kann angezeigt werden.

Noch ein Hinweis:

Bei Verwendung von strtotime(date("Y-m-d h:i:s")) für die Zeitverarbeitung muss bei den Buchstaben hier die Groß-/Kleinschreibung beachtet werden,

h Dabei wird die Groß-/Kleinschreibung beachtet. Das kleine h gibt die Stunde in der Zeitzone aus. Das große H gibt 17 aus,

, und beim Jahr y wird die Groß-/Kleinschreibung beachtet, und das kleine y gibt 13 aus. Die Produktion des Kapitals Y beträgt 2013.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn