So erhalten Sie die seit Mitternacht verstrichenen Sekunden

Lesezeit: 5 Minuten

Benutzeravatar von Nubcake
Nubkuchen

Wie erhalten Sie mit PHP die Anzahl der Sekunden, die seit Mitternacht des aktuellen Tages vergangen sind?

Alles, was ich jetzt versucht habe, ist:

$hour=substr(date("h:i:s"),0,2);
$minute=substr(date("h:i:s"),3,2);
echo $hour."\r\n";
echo $minute."\r\n";

…aber es gibt nicht die richtige Serverzeit der Antwort zurück und ich weiß nicht, wie ich das machen soll.

  • Wo bleibst du dabei hängen? Was hast du versucht?

    – azhrei

    13. Juli 2012 um 1:22 Uhr

  • Alles, was ich gerade versucht habe, ist $hour=substr(date(“h:i:s”),0,2); $minute=substr(date(“h:i:s”),3,2); Echo $Stunde.”\r\n”; echo $minute.”\r\n”; aber es gibt nicht die korrekte Serverzeit der Antwort zurück und ich weiß nicht, wie das geht. Ich verwende an anderer Stelle eine GET-Anfrage und versuche, mein PHP-Skript dazu zu bringen, die Anzahl der Sekunden zurückzugeben, die seit Mitternacht des aktuellen Tages vergangen sind

    – Nubkuchen

    13. Juli 2012 um 1:23 Uhr


  • Schauen Sie hier: stackoverflow.com/a/479147

    – Robert Harvey

    13. Juli 2012 um 1:23 Uhr


  • Bitte lassen Sie dies die allerletzte Frage sein, die jemals zu diesem Thema gestellt wurde. Diese Frage und die meisten ähnlichen Fragen können durch Lesen des Handbuchs beantwortet werden. Informationen zu relativen Formaten finden Sie im Handbuch: php.net/manual/en/datetime.formats.relative.php Weitere Details zu akzeptablen Datumsformaten finden Sie hier im Handbuch: php.net/manual/en/datetime.formats.php

    – Bob-der-Zerstörer

    13. Juli 2012 um 1:30 Uhr

  • @Nubcake: Ich entschuldige mich dafür, dass ich mit meinem letzten Kommentar / meiner letzten Antwort unhöflich war. Aber ich möchte Sie bitten, dass Sie das nächste Mal, wenn Sie die Suchfunktion auf dieser Website zum ersten Mal verwenden, alle Beiträge finden, die Ihrem Problem ähnlich oder genau entsprechen.

    – Bob-der-Zerstörer

    13. Juli 2012 um 1:53 Uhr

Benutzeravatar von noko
noko

Das sollte funktionieren.

echo time() - strtotime("today");

Dies zeigt jedoch nur die Zeitzone Ihres Servers an.

Benutzeravatar von Wranorn
Wranorn

Ich glaube, am einfachsten wäre es, die aktuelle Zeit (in Sekunden) durch die Anzahl der Sekunden eines Tages (60 * 60 * 24) zu teilen und den Rest zu nehmen:

(time() % 86400)

  • Schön, aber es zählt Sekunden seit Mitternacht koordinierte Weltzeitnicht Ortszeit

    – weit

    2. Juni 2016 um 8:52 Uhr

  • Es stimmt, es verwendet die Linux-Epoche in GMT / UTC — Schätze, es war nie ein Problem für mich, da ich UTC sowieso für alles verwende.

    – Wranorn

    3. Juni 2016 um 8:08 Uhr

  • “Ich werde gegen Mitternacht zu Hause sein, Schatz” lautes Geplapper am anderen Ende„Nein Schatz, ich ähm, meinte Mitternacht koordinierte Weltzeit!” 😉

    – weit

    3. Juni 2016 um 8:23 Uhr

  • OK, alles PHP weise 🙂

    – Wranorn

    3. Juni 2016 um 9:49 Uhr

  • Ist die aktuelle Zeit in Sekunden nicht bereits die Gesamtsekunden ab Mitternacht?

    – SZT

    8. Oktober 2020 um 9:28 Uhr

Wenn Sie DateTime verwenden:

 $timeDiff = $time->diff(new \DateTime("today")); 
 $timeDiffSec = $timeDiff->h* 3600 + $timeDiff->i*60 + $timeDiff->s;

echo (date('G') * 3600 + date('i') * 60);

Multiplizieren Sie die aktuelle Stunde mit der Anzahl der Sekunden in jeder Stunde und addieren Sie sie zur Anzahl der Minuten multipliziert mit der Anzahl der Sekunden in jeder Minute.

Ich denke, Sie möchten die Zeit vom Beginn des Tages bis zu den aktuellen Stunden und Sekunden des Tages erhalten, dies kann so erfolgen, Sie müssen immer noch Ihre Zeitzonenzeit anstelle von „Asia/Karachi“ einstellen. Dadurch wird die korrekte Zeit seit Mitternacht in der Zeitzone des Benutzers anstelle der Zeitzonenzeit des Servers angezeigt.

Hier ist ein funktionierender Link:
http://codepad.viper-7.com/ykJC2R

//Get current time timestamp
$time_now = time();

//Create DateTime class object
$date = new DateTime(); 

//Set timestamp to DateTime object
$date->setTimestamp( $time_now );

//Set timezone so that code don't get server's timezone midnight time
$date->setTimezone(new DateTimeZone('Asia/Karachi'));

//Print current time in user's timezone
echo $date->format('Y-m-d H:i') . "<br />";

//Get time stamp for midnight tonight
$date->modify('today midnight');
$midnight_time = $date->getTimestamp();

//Print midnight time in user's timezone
echo $date->format('Y-m-d H:i') . "<br />"; 

    //Now you will need to subtract midnight time from current time in user's timezone
$seconds_since_midnight = $time_now - $midnight_time;

//Print seconds since midnight in your timezone
echo $seconds_since_midnight;

Die kürzeste Lösung wäre wohl diese:

$time = "12:34:56";
echo strtotime("{$time}UTC", 0);

Der Grund, warum dies funktioniert, ist folgender strtotime verwendet den zweiten Parameter, um die zu bestimmen Datum Teil der Zeitkette. In diesem Fall verwende ich 0was bedeutet, dass die vollständige Zeichenfolge ergibt 1970-01-01 12:34:56 UTC. strtotime gibt dann den UNIX-Zeitstempel zurück (die Anzahl der Sekunden, die seitdem vergangen sind 1970-01-01 00:00:00 UTC). Hinweis: Der erste Parameter hat UTC angehängt, um zu verhindern, dass die Zeit als lokal interpretiert wird.

DateTime (mit Mikrosekunden)

Eine schnellere (3×) und präzisere Alternative zu den bereits erwähnten DateTime::diff Lösung:

$date = new DateTime;
[$h, $m, $s] = explode(':', $date->format('H:i:s.u'));
echo $h * 3600 + $m * 60 + $s;

Wenn Sie basierend auf Ihrem Kommentar die Zeit als Zeichenfolge erhalten und die Anzahl der Sekunden ab dieser Zeit berechnen möchten:

$time = strtotime($_GET['time']); // Do some verification before this step
$midnight = strtotime("00:00"); // Midnight measured in seconds since Unix Epoch
$sinceMidnight = $time - $midnight; // Seconds since midnight

Los geht’s. Lies hinein Zeit() Funktion von PHP und strtotime().

  • Wie würde das mit einer Zeit aus einer Antwort wie 01:28:49 funktionieren? Ersetze ich 00:00 durch die Serverzeit?

    – Nubkuchen

    13. Juli 2012 um 1:30 Uhr


  • Nr. 00:00 ist Mitternacht, und dann subtrahieren Sie die aktuelle Zeit, um die Zeit seit Mitternacht in Sekunden zu erhalten. Ist das Ihre Frage?

    – Tuschar

    13. Juli 2012 um 1:33 Uhr

  • Lassen Sie mich versuchen, es einfacher zu erklären. Entschuldigung, ich verwende eine GET-Anforderung, und in dieser Antwort vom Server erhalten Sie den Abschnitt Date:. Sagen Sie also, wenn die Zeit (aus diesem Abschnitt) 01:35:33 ist, wie Sie berechnen die Anzahl der Sekunden, die seit Mitternacht seit dieser Zeit vergangen sind. Ich habe vergessen, das im OP hinzuzufügen.

    – Nubkuchen

    13. Juli 2012 um 1:36 Uhr

  • Ich habe einige Änderungen vorgenommen, basierend auf dem, was ich denke, dass Sie sagen. Lesen Sie in strtotime(), ich denke, es ist das, wonach Sie suchen.

    – Tuschar

    13. Juli 2012 um 1:39 Uhr

  • Ich werde es morgen versuchen, es ist sehr spät hier, danke.

    – Nubkuchen

    13. Juli 2012 um 1:42 Uhr

1404750cookie-checkSo erhalten Sie die seit Mitternacht verstrichenen Sekunden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy