Heim > Backend-Entwicklung > PHP-Tutorial > Zeit – PHP zählt bis zu einer bestimmten Zeit herunter. Es ist ein Fehler aufgetreten. ? ?

Zeit – PHP zählt bis zu einer bestimmten Zeit herunter. Es ist ein Fehler aufgetreten. ? ?

WBOY
Freigeben: 2016-08-18 09:15:43
Original
1176 Leute haben es durchsucht

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Beim Schreiben von Jahr und Monat treten auf diese Weise Fehler auf. Wie soll ich es schreiben?
Hat dieser Fehler Auswirkungen?

Antwortinhalt:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Wenn der Zeitfehler Ihrer Maschine nicht groß ist, sollte es auch nicht viele Fehler geben

<code>$dt=($d/3600/24)%30;

这句也有问题吧.</code>
Nach dem Login kopieren

Was die Zeit betrifft, können Sie Carbon diese Drittanbieterbibliothek für schnelle Berechnungen verwenden.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage