Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann man die Minuten einer bestimmten Zeit elegant ausgeben?

Wie kann man die Minuten einer bestimmten Zeit elegant ausgeben?

WBOY
Freigeben: 2016-09-03 00:14:14
Original
1023 Leute haben es durchsucht

> 15:07:00

Ich habe es selbst geschrieben, aber es fühlte sich nicht einfach genug an


Antwortinhalt:
<code>function get_minutes($dest){
    $start1 =new DateTime();
    $date = $start1 ->format('Y-m-d-H-i-s');
    list($year,$mon,$day,$hour,$min,$sec) = explode('-',$date);
    $start2 = new DateTime($year.'-'.$mon.'-'.$day.' '.$hour.':'.$min);
    $needle = floor($min/10)*10 +$dest;
    $needle = $needle > $min ? $needle : $needle +10;
    $extra = $needle - $min;
    $timestr = '+ '.$extra.' minutes';
    $start2->modify($timestr);
    return $start2->format('Y-m-d H:i:s');
}
echo get_minutes(7);</code>
Nach dem Login kopieren
Nach dem Login kopieren
> 15:07:00Ich habe es selbst geschrieben, aber es fühlte sich nicht einfach genug an


Lassen Sie uns zunächst den Bedarf analysieren: 7 Minuten, 10 7 Minuten, 20 7 Minuten, 40 7 Minuten, 50 7 Minuten. Außerdem beträgt die Differenz von 57 Minuten zum nächsten Knoten beträgt ebenfalls 10 Minuten.
Denn die Gesamtzahl der Sekunden vom 1. Januar 1970 um 00:00:00 Uhr GMT bis heute.
Die ersten 7 Minuten betragen 420 Sekunden, dann werden 600 Sekunden hinzugefügt.

Die Anzahl der Sekunden, die addiert werden müssen, beträgt: Teilen Sie zunächst die aktuelle Zeit durch 600. Wenn sie kleiner als 420 ist, subtrahieren Sie sie einfach mit 420. Wenn sie größer ist, subtrahieren Sie sie mit 600 420.
<code>function get_minutes($dest){
    $start1 =new DateTime();
    $date = $start1 ->format('Y-m-d-H-i-s');
    list($year,$mon,$day,$hour,$min,$sec) = explode('-',$date);
    $start2 = new DateTime($year.'-'.$mon.'-'.$day.' '.$hour.':'.$min);
    $needle = floor($min/10)*10 +$dest;
    $needle = $needle > $min ? $needle : $needle +10;
    $extra = $needle - $min;
    $timestr = '+ '.$extra.' minutes';
    $start2->modify($timestr);
    return $start2->format('Y-m-d H:i:s');
}
echo get_minutes(7);</code>
Nach dem Login kopieren
Nach dem Login kopieren




Was für eine seltsame Anforderung.

Ich denke, Ihr Code ist etwas kompliziert, aber die Idee ist eigentlich sehr einfach.
<code class="php">$time = time();
echo date('Y-m-d H:i:s',$time);
$last = $time%600;
$last = $last<420?420-$last:1020-$last;
echo '<br />';
echo date('Y-m-d H:i:s',$time+$last);</code>
Nach dem Login kopieren
Überprüfen Sie einfach, ob die einzelne Ziffer der Minute größer als 7 ist. Wenn sie größer ist Wenn Sie mehr als 7 haben, verwenden Sie die 17-Einzelziffer, andernfalls verwenden Sie die 7-Einzelziffer. Was berechnet wird, ist die Differenz zwischen der nächsten Minute, die auf 7 endet, und der aktuellen Minute, oder?

<code>function get_minutes($dest) {
    if ($dest >= 10) {
        throw new Exception('param error!');
    }
    $mitute = date('i');
    $unit   = $mitute % 10;//个位分钟数
    $offset = $dest - $unit;
    if ($dest <= $unit) {
        $offset += 10;
    }
    return date('Y-m-d H:i:00', strtotime('+' . $offset . ' minutes'));
}

echo get_minutes(7);</code>
Nach dem Login kopieren

Geben Sie mir ein Beispiel. 7 ist darin fest codiert. Sie können es entsprechend Ihren Anforderungen ändern.



Verwandte Etiketten:
php
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