Wie würde ich heute um Mitternacht einen Zeitstempel in PHP bekommen? Angenommen, es ist Montag, 17 Uhr, und ich möchte den Zeitstempel für Montag (heute) um Mitternacht (12 Uhr), was bereits geschehen ist.
Danke dir
Wie würde ich heute um Mitternacht einen Zeitstempel in PHP bekommen? Angenommen, es ist Montag, 17 Uhr, und ich möchte den Zeitstempel für Montag (heute) um Mitternacht (12 Uhr), was bereits geschehen ist.
Danke dir
Antworten:
$timestamp = strtotime('today midnight');
Vielleicht möchten Sie einen Blick auf das Angebot von PHP werfen: http://php.net/datetime
$timestamp = strtotime('today');
ist Mitternacht. Aber pssst das obige sieht als Antwort auf die Frage cooler aus;)
strtotime('today+00:00')
.
Ich denke, dass Sie das neue PHP DateTime-Objekt verwenden sollten, da es keine Probleme mit Datumsangaben gibt, die über die 32-Bit-Einschränkungen von strtotime () hinausgehen. Hier ist ein Beispiel, wie Sie das heutige Datum um Mitternacht erhalten würden.
$today = new DateTime();
$today->setTime(0,0);
Wenn Sie PHP 5.4 oder höher verwenden, können Sie dies folgendermaßen tun:
$today = (new DateTime())->setTime(0,0);
Dann können Sie das verwenden echo $today->format('Y-m-d');
, um das Format zu erhalten, in dem Ihr Objekt ausgegeben werden soll.
new DateTime('today midnight')
, was die Absicht klarer macht (aber das ist natürlich Geschmackssache).
$today = new DateTime('today')
new Carbon('today midnight')
und dann können Sie alle Carbon-Sachen wie verwenden ->subDays(6)
. Siehe carbon.nesbot.com
Heute um Mitternacht. Einfach.
$stamp = mktime(0, 0, 0);
Sie möchten die Zeit des letzten himmlischen Ereignisses berechnen, bei dem die Sonne direkt unter Ihren Füßen vorbeigegangen ist, angepasst an die örtlichen Konventionen zur Markierung des Hochmittags und möglicherweise auch so, dass die Menschen nach der Rückkehr von der Arbeit genügend Tageslicht übrig haben andere politische Überlegungen.
Entmutigend, oder? Eigentlich ist dies ein häufiges Problem, aber die vollständige Antwort ist ortsabhängig:
$zone = new \DateTimeZone('America/New_York'); // Or your own definition of “here”
$todayStart = new \DateTime('today midnight', $zone);
$timestamp = $todayStart->getTimestamp();
Mögliche Definitionen von "hier" sind unter https://secure.php.net/manual/en/timezones.php aufgeführt
strtotime('America/New_York today midnight');
? - 3v4l.org/I85qD
$today_at_midnight = strtotime(date("Ymd"));
sollte dir geben, wonach du suchst.
Erläuterung
Ich habe die Datumsfunktion von PHP verwendet, um das heutige Datum ohne Zeitangaben abzurufen, und es dann an die Funktion "String to Time" übergeben, die ein Datum und eine Uhrzeit in einen Epochenzeitstempel konvertiert. Wenn es keine Zeit bekommt, nimmt es die erste Sekunde dieses Tages an.
Referenzen: Datum Funktion: http://php.net/manual/en/function.date.php
String To Time: http://us2.php.net/manual/en/function.strtotime.php
strtotime()
, war der Geist so auf die Datumsfunktion konzentriert. Entschuldigung.
In mehr Objekt Weise:
$today = new \DateTimeImmutable('today');
Beispiel:
echo (new \DateTimeImmutable('today'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 00:00:00
und:
echo (new \DateTimeImmutable())->format('Y-m-d H:i:s');
echo (new \DateTimeImmutable('now'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 14:00:35
$midnight = strtotime('midnight');
ist gültig
Sie können auch ausprobieren
strtotime('12am')
oder strtotime('[input any time you wish to here. e.g noon, 6pm, 3pm, 8pm, etc]')
. Ich habe das Hinzufügen heute vor Mitternacht übersprungen, da die Standardeinstellung heute ist.
function getTodaysTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const startOfDay = currentTimeStamp - (currentTimeStamp % 86400);
return { startOfDay, endOfDay: startOfDay + 86400 - 1 };
}
// starts from sunday
function getThisWeeksTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const currentDay = new Date(currentTimeStamp * 1000);
const startOfWeek = currentTimeStamp - (currentDay.getDay() * 86400) - (currentTimeStamp % 86400);
return { startOfWeek, endOfWeek: startOfWeek + 7 * 86400 - 1 };
}
function getThisMonthsTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const currentDay = new Date(currentTimeStamp * 1000);
const startOfMonth = currentTimeStamp - ((currentDay.getDate() - 1) * 86400) - (currentTimeStamp % 86400);
const currentMonth = currentDay.getMonth() + 1;
let daysInMonth = 0;
if (currentMonth === 2) daysInMonth = 28;
else if ([1, 3, 5, 7, 8, 10, 12].includes(currentMonth)) daysInMonth = 31;
else daysInMonth = 30;
return { startOfMonth, endOfMonth: startOfMonth + daysInMonth * 86400 - 1 };
}
console.log(getTodaysTimeStamp());
console.log(getThisWeeksTimeStamp());
console.log(getThisMonthsTimeStamp());