Wie erhalte ich den Zeitstempel von z.B. 22-09-2008
?
Antworten
Zu viele Anzeigen?Diese Methode funktioniert bei beide Windows und Unix et es Zeitzone bewusst, was Sie wahrscheinlich wollen, wenn Sie mit Daten .
Wenn Ihnen die Zeitzone egal ist oder Sie 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 der Zeitzone Ihres Servers ab...)
Wenn Sie angeben möchten, in welcher Zeitzone, hier EST. (Dasselbe 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 Folgendes verwenden möchten UTC . (Dasselbe 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 eine gute
Mit DateTime
API :
$dateTime = new DateTime('2008-09-22');
echo $dateTime->format('U');
// or
$date = new DateTime('2008-09-22');
echo $date->getTimestamp();
Dasselbe gilt für die prozedurale API:
$date = date_create('2008-09-22');
echo date_format($date, 'U');
// or
$date = date_create('2008-09-22');
echo date_timestamp_get($date);
Wenn der obige Versuch fehlschlägt, weil Sie eine nicht unterstütztes Format können Sie verwenden
$date = DateTime::createFromFormat('!d-m-Y', '22-09-2008');
echo $dateTime->format('U');
// or
$date = date_parse_from_format('!d-m-Y', '22-09-2008');
echo date_format($date, 'U');
Beachten Sie, dass Sie, wenn Sie nicht die Option !
wird der Zeitanteil auf die aktuelle Zeit gesetzt, anders als bei den ersten vier, die Mitternacht verwenden, wenn Sie die Zeit weglassen.
Eine weitere Alternative ist die Verwendung der IntlDateFormatter
API:
$formatter = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'GMT',
IntlDateFormatter::GREGORIAN,
'dd-MM-yyyy'
);
echo $formatter->parse('22-09-2008');
Sofern Sie nicht mit lokalisierten Datumszeichenfolgen arbeiten, ist die einfachere Wahl wahrscheinlich DateTime.
Seien Sie vorsichtig mit Funktionen wie strtotime()
die versuchen zu "erraten", was Sie meinen (es wird natürlich nicht erraten, die Regeln sind hier ).
In der Tat 22-09-2008
wird geparst als 22. September 2008 denn das ist das einzig Vernünftige.
Wie wird 08-09-2008
geparst werden? Wahrscheinlich 09. August 2008 .
Was ist mit 2008-09-50
? Einige PHP-Versionen interpretieren dies als 20. Oktober 2008 .
Wenn Sie also sicher sind, dass Ihr Beitrag in DD-MM-YYYY
Format, ist es besser, die Lösung zu verwenden, die von @Armin Ronacher .
Diese Methode funktioniert bei beide Windows und Unix et es Zeitzone bewusst, was Sie wahrscheinlich wollen, wenn Sie mit Daten .
Wenn Ihnen die Zeitzone egal ist oder Sie 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 der Zeitzone Ihres Servers ab...)
Wenn Sie angeben möchten, in welcher Zeitzone, hier EST. (Dasselbe 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 Folgendes verwenden möchten UTC . (Dasselbe 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, beim Parsen von Zeichenketten in strukturierte Daten streng zu sein. Das kann in der Zukunft unangenehme Fehlersuche ersparen. Daher empfehle ich, immer das Datumsformat anzugeben.
- See previous answers
- Weitere Antworten anzeigen