Bei der PHP -Programmierung begegnen wir häufig auf die Notwendigkeit, die aktuelle Zeit- oder Betriebszeitstempel zu erhalten. Die GetTimeOfday () -Funktion ist eine sehr nützliche Zeitfunktion, die in PHP eingebaut ist. Es gibt ein assoziatives Array zurück, das die aktuellen Zeitinformationen enthält. Dieses Array enthält Zeitinformationen auf Mikrosekundenebene, gibt jedoch keinen Unix -Zeitstempel direkt zurück. Wenn wir es in das Zeitstempelformat konvertieren möchten, ist noch eine Verarbeitung erforderlich. In diesem Artikel wird mitteilen, wie das Array von GetTimeOfday () in einen Unix -Zeitstempel zurückgegeben wird.
Lassen Sie uns zunächst die Struktur des Arrays verstehen, die von GetTimeofday () zurückgegeben wurden. Diese Funktion gibt ein assoziatives Array mit der folgenden Struktur zurück:
<span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"sec"</span></span><span> => Die Anzahl der Sekunden der aktuellen Zeit, </span><span><span class="hljs-comment">// aus1970Jahr1Mond1Anzahl der Sekunden von Tag zu Tag</span></span><span>
</span><span><span class="hljs-string">"usec"</span></span><span> => Mikrosekunde Teil, </span><span><span class="hljs-comment">// Eine kleine Anzahl von Sekunden,范围aus0ankommen999999</span></span><span>
</span><span><span class="hljs-string">"minuteswest"</span></span><span> => Lokale Zeitzonenabweichung, </span><span><span class="hljs-comment">// Optional</span></span><span>
</span><span><span class="hljs-string">"dsttime"</span></span><span> => Tageslichtspartzeitanzeige, </span><span><span class="hljs-comment">// Optional</span></span><span>
)
</span></span>
SEC repräsentiert die Anzahl der Sekunden vom 1. Januar 1970 bis zur aktuellen Zeit, und USEC repräsentiert den Teil der Mikrosekunden. Wir wollen diese beiden Teile in einen Zeitstempel zusammenführen, der normalerweise durch Umwandlung von SEC in Sekunden und dann Usec um 1.000.000 geteilt werden kann (d. H. Wie Mikrosekunden in Sekunden umgewandelt werden).
Hier ist ein PHP -Beispielcode zum Konvertieren des von GetTimeOfday () in einen Unix -Zeitstempel zurückgegebenen Array:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Erhalten Sie aktuelle Zeitinformationen</span></span><span>
</span><span><span class="hljs-variable">$time_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>();
</span><span><span class="hljs-comment">// Berechnen Sie den Zeitstempel</span></span><span>
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-variable">$time_info</span></span><span>[</span><span><span class="hljs-string">'sec'</span></span><span>] + (</span><span><span class="hljs-variable">$time_info</span></span><span>[</span><span><span class="hljs-string">'usec'</span></span><span>] / </span><span><span class="hljs-number">1000000</span></span><span>);
</span><span><span class="hljs-comment">// Ausgangszeitstempel</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktueller Zeitstempel: "</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Im obigen Code:
$ time_info ['sec'] erhält die aktuelle Anzahl von Sekunden.
$ time_info ['usec'] erhält die aktuelle Anzahl von Mikrosekunden.
Indem wir die Anzahl der Mikrosekunden um 1.000.000 teilen, wandeln wir sie in einen fraktionalen Teil der zweiten und enden mit einem schwebenden Unix -Zeitstempel.
Zeitgenauigkeit:
Da die Zeit auf Mikrosekunde enthalten ist, ist der zurückgegebene Zeitstempel eine schwimmende Zahl, die die Kombination von Sekunden und Mikrosekunden darstellt. Sie können die Anzahl der Dezimalstellen entsprechend den tatsächlichen Bedürfnissen behalten, z. B. mit der Funktion rund (), um das Ergebnis zu runden.
Zeitzone und Tageslicht sparen Zeit:
Die Funktion GetTimeOfday () gibt das Ergebnis basierend auf der lokalen Zeit des Servers zurück. Wenn Sie sich mit Zeitzonenabweichungen oder Daylight -Sparenzeitproblemen befassen müssen, müssen Sie möglicherweise auch andere Funktionen wie DATE_DEFAULT_TIMEZONE_SET () kombinieren, um die Zeitzone oder TimeZone -Objekte so festzulegen, dass sie Zeit genauer verarbeiten.
Leistung:
Zeitstempel auf Mikrosekundenebene sind für einige Hochleistungsanwendungen sehr wichtig, insbesondere bei Zeitstempelvergleiche oder Protokollierung. Wenn Sie keine mikrosekundenige Präzision benötigen, sollten Sie die Funktion Time () verwenden, die direkt einen Unix -Zeitstempel auf der zweiten Ebene zurückgibt.
Die Zeitinformationen, die über GetTimeOfday () erhalten wurden, enthält eine raffiniertere Zeitgranularität und eignet sich für Szenarien, in denen hochpräzise Zeitvorgänge erforderlich sind. Obwohl das zurückgegebene Ergebnis ein Array mit einfachen mathematischen Operationen ist, können wir es leicht in einen Unix -Zeitstempel umwandeln. Mit dieser Fähigkeit können Sie zeitbezogene Funktionen in PHP effizienter bewältigen.