Wie konvertiere ich Datum in Zeitstempel in PHP?

Lesezeit: 6 Minuten

Wie konvertiere ich Datum in Zeitstempel in PHP
Wizard4U

Wie bekomme ich Zeitstempel von zB 22-09-2008?

1646908449 93 Wie konvertiere ich Datum in Zeitstempel in PHP
Owen

Diese Methode funktioniert weiter beide Windows und Unix und ist Zeitzone bewusst, was Sie wahrscheinlich wollen, wenn Sie damit arbeiten Termine.

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 wird je nach Zeitzone Ihres Servers unterschiedlich sein …)

Wenn Sie angeben möchten, in welcher Zeitzone, hier EST. (Dasselbe wie in 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 verwenden möchten koordinierte Weltzeit. (Gleich wie “mittlere Greenwich-Zeit“.)

$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 Zeichenfolgen in strukturierte Daten streng vorzugehen. Es kann in Zukunft umständliches Debugging ersparen. Daher empfehle ich, immer das Datumsformat anzugeben.

  • Elegant. Das hatte ich vergessen!

    – Bis

    22. September 2008 um 8:49 Uhr

  • Wie kommt es, dass Sie diese Antwort noch nicht gewürdigt haben?!

    – Mark Tomlin

    13. Juni 2010 um 13:09 Uhr

  • Eine völlig gültige Antwort, aber ich bin überrascht, dass die Antwort von Armin Ronacher bei positiven Stimmen nicht mit ihr übereinstimmt – Mehrdeutigkeit ist IMMER schlecht.

    – RonLugge

    5. März 2013 um 5:40 Uhr

  • @Devner Nun, es scheint, dass dieses Format auf meinem Server nicht unterstützt wird. Vielleicht ist das bei deinem anders.

    – Lukas

    22. April 2013 um 0:05 Uhr

  • @LucaFagioli Es scheint, dass Prof. Falken, der diese Antwort unbedingt mit so vielen positiven Stimmen sehen wollte, sie aktualisiert und seine eigene Wissenschaft aufgenommen hat.

    – Déjà-vu

    23. Juli 2020 um 15:05 Uhr

1646908449 885 Wie konvertiere ich Datum in Zeitstempel in PHP
Armin Ronacher

Es gibt auch strptime() die genau ein Format erwartet:

$a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);

  • es sollte tm_mon anstelle von tm_month und tm_mday anstelle von tm_day sein

    – Amarillon

    15. Mai 2009 um 11:32 Uhr

  • Achtung, die Strptime-Funktion ist unter Windows nicht verfügbar.

    – Unterstapel

    29. Mai 2010 um 12:03 Uhr


  • Diejenigen unter Windows und PHP 5.3.0+ sollten die Verwendung in Betracht ziehen date_parse_from_format anstatt strptime.

    – Erwin Wessels

    25. Juni 2013 um 9:56 Uhr

  • … da strptime ist nicht in Windows-Plattformen implementiert.

    – Randel

    7. Mai 2015 um 7:21 Uhr

  • Da dies eine hoch bewertete Antwort ist, werden Sie in Betracht ziehen, sie in eine Antwort zu bearbeiten, die sowohl unter PHP für Windows als auch unter Unixen funktioniert? Und meiner Meinung nach sollte es idealerweise Zeitzonen erwähnen.

    – Prof. Falken

    13. Mai 2020 um 14:44 Uhr

1646908450 152 Wie konvertiere ich Datum in Zeitstempel in PHP
Gordon

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 das obige fehlschlägt, weil Sie a nicht unterstütztes Formatkö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, wenn Sie die nicht festlegen !wird der Zeitteil auf die aktuelle Zeit gesetzt, die sich von den ersten vier unterscheidet, die Mitternacht verwenden, wenn Sie die Zeit weglassen.

Eine weitere Alternative ist die Verwendung von 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 DateTime wahrscheinlich die einfachere Wahl.

  • Ich würde dies meiner heutigen Antwort vorziehen.

    – Bis

    11. Januar 2012 um 16:47 Uhr

  • Arggg. ! Vergessen Sie nicht die ! Mein datumsbasierter Zeitstempel änderte sich bei jeder Aktualisierung und machte mich verrückt – weil DateTime hilfreich die aktuelle Uhrzeit hinzufügte, ohne zu fragen oder gesagt zu bekommen. Grrr.

    Benutzer672739

    8. Juni 2018 um 8:40 Uhr

  • Ich möchte hinzufügen, dass ich gegen eine mehrdeutige Datumsanalyse empfehle und dass das Datumsformat beim Analysieren von Datumszeichenfolgen explizit angegeben werden sollte.

    – Prof. Falken

    13. Mai 2020 um 14:57 Uhr

Wie konvertiere ich Datum in Zeitstempel in PHP
daremon

Seien Sie vorsichtig mit Funktionen wie strtotime() die versuchen, zu “raten”, was Sie meinen (es errät natürlich nicht, die Regeln sind hier).

In der Tat 22-09-2008 wird analysiert als 22. September 2008da es das einzig Vernünftige ist.

Wie wird 08-09-2008 geparst werden? Wahrscheinlich 09.08.2008.

Wie wäre es mit 2008-09-50? Einige Versionen von PHP analysieren dies als 20. Oktober 2008.

Also, wenn Sie sicher sind, dass Ihre Eingabe drin ist DD-MM-YYYY verwenden Sie besser die Lösung von @Armin Ronacher.

1646908452 612 Wie konvertiere ich Datum in Zeitstempel in PHP
Prof. Falken

Diese Methode funktioniert weiter beide Windows und Unix und ist Zeitzone bewusst, was Sie wahrscheinlich wollen, wenn Sie damit arbeiten Termine.

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 wird je nach Zeitzone Ihres Servers unterschiedlich sein …)

Wenn Sie angeben möchten, in welcher Zeitzone, hier EST. (Dasselbe wie in 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 verwenden möchten koordinierte Weltzeit. (Gleich wie “mittlere Greenwich-Zeit“.)

$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 Zeichenfolgen in strukturierte Daten streng vorzugehen. Es kann in Zukunft umständliches Debugging ersparen. Daher empfehle ich, immer das Datumsformat anzugeben.

  • Hey Falken, gerne geschehen. Es ist jedoch wahrscheinlich besser anzugeben, dass diese Lösung für PHP 5.3+ gilt

    – Luca Fagioli

    13. April 2015 um 13:46 Uhr


1646908452 301 Wie konvertiere ich Datum in Zeitstempel in PHP
Bis

Verwenden Zeit:

list($day, $month, $year) = explode('-', '22-09-2008');
echo mktime(0, 0, 0, $month, $day, $year);

  • Hey Falken, gerne geschehen. Es ist jedoch wahrscheinlich besser anzugeben, dass diese Lösung für PHP 5.3+ gilt

    – Luca Fagioli

    13. April 2015 um 13:46 Uhr


1646908453 64 Wie konvertiere ich Datum in Zeitstempel in PHP
klit67

Mit der Funktion strtotime() können Sie das Datum einfach in einen Zeitstempel umwandeln

<?php
// set default timezone
date_default_timezone_set('America/Los_Angeles');

//define date and time
$date = date("d M Y H:i:s");

// output
echo strtotime($date);
?> 

Mehr Info: http://php.net/manual/en/function.strtotime.php

Online-Konvertierungstool: http://freeonlinetools24.com/

  • An zukünftige Leser – strtotime() war ein Unfall und seine Verwendung sollte nicht gefördert werden. Es ist mehrdeutig, weil es versucht, das Datumsformat zu erraten. Selbst wenn Sie es richtig verwenden, macht es Ihren Code schwerer zu verstehen und zu begründen, und Sie laufen Gefahr, dass eine Änderung an Ihrer Codebasis vorgenommen wird, die Fehler einführt, denn egal, was Sie strtotime() geben, es wird gemacht am besten raten. Diese Vermutung kann falsch sein, aber Sie erhalten keinen Hinweis darauf, dass sie falsch geraten hat. Es ist eine Fußwaffe. Verwenden Sie es, wenn Sie möchten, aber Anfänger können eine Einschränkung verwenden, denke ich. Achtung: Fußwaffe voraus

    – Prof. Falken

    13. Mai 2020 um 14:41 Uhr

987560cookie-checkWie konvertiere ich Datum in Zeitstempel in PHP?

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

Privacy policy