<code><?php /** * Created by coder meng. * User: coder meng * Date: 2016/8/16 16:39 */ $now=time(); echo '<br>'; $end=strtotime('2018-8-16 00:00:00'); $d=$end-$now; $y=floor($d/3600/24/30/12); $m=($d/3600/24/30)%12; $dt=($d/3600/24)%30; echo "距世界杯还有{$y}年{$m}个月{$dt}天"; </code>
Beim Schreiben von Jahr und Monat treten auf diese Weise Fehler auf. Wie soll ich es schreiben?
Hat dieser Fehler Auswirkungen?
<code><?php /** * Created by coder meng. * User: coder meng * Date: 2016/8/16 16:39 */ $now=time(); echo '<br>'; $end=strtotime('2018-8-16 00:00:00'); $d=$end-$now; $y=floor($d/3600/24/30/12); $m=($d/3600/24/30)%12; $dt=($d/3600/24)%30; echo "距世界杯还有{$y}年{$m}个月{$dt}天"; </code>
Beim Schreiben von Jahr und Monat treten auf diese Weise Fehler auf. Wie soll ich es schreiben?
Hat dieser Fehler Auswirkungen?
DateTime kann verwendet werden, um die Differenz zweier Datumsangaben sehr bequem und schnell zu berechnen.
<code class="php"> <?php $datetime1 = new DateTime(); $datetime2 = new DateTime('2018-08-16'); $interval = $datetime1->diff($datetime2); list($y, $m, $d) = explode('-', $interval->format('%Y-%m-%d')); echo "距世界杯还有{$y}年{$m}个月{$d}天";</code>
Der Schlüssel ist, dass die Logik unklar ist. Ist der 1. Februar bis 1. März ein Monat oder 28 (29) Tage?
Eine krumme Methode besteht darin, die Differenz als Datumsanalyse zu verwenden und sie mit dem 1.1.1970 zu vergleichen
<code class="php"><?php $now=time(); $end=strtotime('2018-8-16 00:00:00'); $d=$end-$now; $y = date('Y', $d) - 1970; $m = date('n', $d) - 1; $d = date('j', $d) - 1; printf('还有%d年%d月%d天', $y, $m, $d);</code>
https://3v4l.org/1QEbC
Warum time() verwenden
Warum nicht zum frühen Morgen dieses Tages gehen?
<code>$y=floor($d/3600/24/30/12); //这个年有点牵强,有些月份不止30天呢。</code>
Wenn der Zeitfehler Ihrer Maschine nicht groß ist, sollte es auch nicht viele Fehler geben
<code>$dt=($d/3600/24)%30; 这句也有问题吧.</code>
Was die Zeit betrifft, können Sie Carbon
diese Drittanbieterbibliothek für schnelle Berechnungen verwenden.