Wie bekomme ich einen Zeitstempel von zB 22-09-2008
?
350
Diese Methode funktioniert auf beiden Windows und Unix und ist Zeitzone bewusst, was wahrscheinlich ist , was Sie wollen , wenn Sie mit der Arbeit Daten .
Wenn Sie sich nicht für die Zeitzone interessieren oder die Zeitzone verwenden möchten, die Ihr Server verwendet:
$d = DateTime::createFromFormat('d-m-Y H:i:s', '22-09-2008 00:00:00');
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093324 (Dies hängt von Ihrer Server-Zeitzone ab ...)
Wenn Sie angeben möchten, in welcher Zeitzone, hier EST. (Wie New York.)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('EST')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093305
Oder wenn Sie UTC verwenden möchten . (Wie " GMT ".)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('UTC')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093289
Unabhängig davon ist es immer ein guter Ausgangspunkt, um beim Analysieren von Zeichenfolgen in strukturierte Daten streng zu sein. Dies kann in Zukunft umständliches Debuggen ersparen. Daher empfehle ich, immer das Datumsformat anzugeben.
Es gibt auch strptime (), das genau ein Format erwartet:
quelle
date_parse_from_format
anstelle von verwendenstrptime
.strptime
nicht in Windows-Plattformen implementiert ist.Mit
DateTime
API :Das gleiche gilt für die prozedurale API:
Wenn dies fehlschlägt, weil Sie ein nicht unterstütztes Format verwenden , können Sie es verwenden
Beachten Sie, dass, wenn Sie die nicht einstellen
!
, der Zeitabschnitt auf die aktuelle Zeit eingestellt wird, die sich von den ersten vier unterscheidet, die Mitternacht verwenden, wenn Sie die Zeit weglassen.Eine weitere Alternative ist die Verwendung der
IntlDateFormatter
API:Wenn Sie nicht mit lokalisierten Datumszeichenfolgen arbeiten, ist DateTime wahrscheinlich die einfachere Wahl.
quelle
!
meinem Datum basierende Zeitstempel bei jeder Aktualisierung geändert hat und mich verrückt gemacht hat - denn DateTime hat die aktuelle Zeit hilfreich hinzugefügt, ohne zu fragen oder informiert zu werden. Grrr.Seien Sie vorsichtig mit solchen Funktionen und
strtotime()
versuchen Sie zu "erraten", was Sie meinen (es wird natürlich nicht erraten, die Regeln sind hier ).In der Tat
22-09-2008
wird als 22. September 2008 analysiert , da dies die einzig vernünftige Sache ist.Wie wird
08-09-2008
analysiert? Voraussichtlich am 9. August 2008 .Was ist mit
2008-09-50
? Einige Versionen von PHP analysieren dies als 20. Oktober 2008 .Wenn Sie also sicher sind, dass Ihre Eingabe im
DD-MM-YYYY
Format vorliegt , ist es besser, die von @Armin Ronacher angebotene Lösung zu verwenden .quelle
dd-mm-yyyy
nichtmm-dd-yyyy
.YYYY-mm-dd
Die Konvertierung wird nur für die BenutzerDiese Methode funktioniert auf beiden Windows und Unix und ist Zeitzone bewusst, was wahrscheinlich ist , was Sie wollen , wenn Sie mit der Arbeit Daten .
Wenn Sie sich nicht für die Zeitzone interessieren oder die Zeitzone verwenden möchten, die Ihr Server verwendet:
1222093324 (Dies hängt von Ihrer Server-Zeitzone ab ...)
Wenn Sie angeben möchten, in welcher Zeitzone, hier EST. (Wie New York.)
1222093305
Oder wenn Sie UTC verwenden möchten . (Wie " GMT ".)
1222093289
Unabhängig davon ist es immer ein guter Ausgangspunkt, um beim Analysieren von Zeichenfolgen in strukturierte Daten streng zu sein. Dies kann in Zukunft umständliches Debuggen ersparen. Daher empfehle ich, immer das Datumsformat anzugeben.
quelle
Verwenden von mktime :
quelle
strtotime()
Aus irgendeinem Grundstrtotime()
funktioniert es an bestimmten Daten nicht und ist daher sehr unzuverlässig.Mit der Funktion strtotime () können Sie Datum und Zeitstempel einfach konvertieren
Weitere Informationen: http://php.net/manual/en/function.strtotime.php
Online-Konvertierungstool: http://freeonlinetools24.com/
quelle
Hier ist eine sehr einfache und effektive Lösung mit den Funktionen
split
undmtime
:Es hat wie ein Zauber für mich funktioniert.
quelle
Da die Funktion unter
strptime()
Windows nicht funktioniert undstrtotime()
unerwartete Ergebnisse liefern kann, empfehle ich die Verwendung vondate_parse_from_format()
:quelle
Wenn Sie sicher wissen möchten, ob ein Datum in etwas analysiert wird, das Sie erwarten, können Sie Folgendes verwenden
DateTime::createFromFormat()
:In diesem Fall ist es offensichtlich, aber es
03-04-2008
könnte zB der 3. April oder der 4. März sein, je nachdem, woher du kommst :)quelle
DateTime::createFromFormat
kehrtfalse
bei Fehler zurück , nichtnull
.Wenn Sie das Format kennen, verwenden Sie,
strptime
weilstrtotime
eine Vermutung für das Format, die möglicherweise nicht immer korrekt ist. Dastrptime
es in Windows nicht implementiert ist, gibt es eine benutzerdefinierte FunktionDenken Sie daran, dass der Rückgabewert
tm_year
von 1900 ist! undtm_month
ist 0-11Beispiel:
quelle
http://php.net/manual/en/function.date.php
quelle
quelle
Verwenden Sie die PHP-Funktion
strtotime()
Datum - Formatiert eine Ortszeit / ein Datum
quelle
quelle
Wenn Sie möchten, fügen Sie es in einen Zeitstempel des MySQL- Eingabetyps ein. Das obige funktioniert sehr gut (nur in PHP 5 oder höher):
quelle
So würde ich es machen:
Auf diese Weise teilen Sie der Funktion mit, welches Datumsformat Sie verwenden, und geben sogar die Zeitzone an.
quelle
Bitte seien Sie vorsichtig mit der Zeit / Zone, wenn Sie festlegen, dass Daten in der Datenbank gespeichert werden, da beim Vergleichen von Daten aus MySQL, die in "
timestamp
Verwendung" konvertiert wurden, ein Problem aufgetreten iststrtotime
. Sie müssen genau dieselbe Zeit / Zone verwenden, bevor Sie das Datum in einen Zeitstempel konvertieren. Andernfalls verwendet strtotime () die Standardserver-Zeitzone.Bitte sehen Sie dieses Beispiel: https://3v4l.org/BRlmV
quelle
Wenn Sie eine UTC datetime (
2016-02-14T12:24:48.321Z
) in einen Zeitstempel konvertieren möchten , gehen Sie wie folgt vor :quelle