Frage

Kennt jemand eine Möglichkeit, eine Zeichenfolge von einem Datum zu erhalten, die das Format des Datums enthält?

<?php
    $date = date ("2009-10-16 21:30:45");

    // smething like this?
    print date_format ($date);
?>

Ich frage das, weil ich diese Funktion optimieren mag ich geschrieben habe, in der Regel das Datum mit einer anderen Zeitzone von einem Server zu erhalten, ohne besondere Dinge zu tun,

<?php
function get_timezone_offset ($timezone, $date = null, $format = null, $offset_timezone = null) {
    if ($date == null) $date = date ($format);
    if ($offset_timezone == null) $offset_timezone = date_default_timezone_get ();
    if ($format == null) $format = "Y-m-d H:i:s";
    // I'd like to find a way that can avoid me to write $format and get it directly from the date i pass, but I don't know a particular method can do it
    // if ($format == null) $format = date_format ($date);

    $date_time = new DateTime ($date, new DateTimeZone ($offset_timezone));
    $date_time->setTimeZone (new DateTimeZone ($timezone));
    return $date_time->format ($format);
}

print get_timezone_offset ("Europe/Rome");
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s"));
print get_timezone_offset ("Europe/Rome", date ("Y-m-d H:i:s"), "Y-m-d H:i:s");
print get_timezone_offset ("Europe/Rome", "2009-10-16 21:30:45", "Y-m-d H:i:s", "America/New_York");
?>

Ich hoffe, reguläre Ausdrücke aus Leistungsgründen zu vermeiden, aber ich weiß nicht, ob dies möglich ist,

War es hilfreich?

Lösung

Soweit ich weiß, gibt es keine garantierten Weg nach hinten zu arbeiten. Der beste Weg sein könnte, um zu versuchen reguläre Ausdrücke mit den erwarteten entsprechen bekannte Formate (z \d{2,4}[-/]\d{2}[-/]\d{2} für „Y-m-d“), aber ich kann nicht auf einfache Weise denken, die Anpassung zu tun, ohne reguläre Ausdrücke zu verwenden. Sie müssten auch prüfen, ob die analysierten Format sinnvoll ist, und Sie können nicht viel tun, um mehrdeutige Daten wie 2. März 2009, die als 09/03/02 dargestellt werden könnte, 2009-03-02, 02/03/09, 03/02/09 oder sogar 09/02/03.

Andere Tipps

Sie können die Zeichenfolge Datum konvertieren mit strtotime und zu tun mit dem Zeitstempel zu, was immer Sie wollen. ;)

<?php
$date = "2009-10-16 21:30:45";
$ts   = strtotime($date);
echo date('Y-m-d', $ts);
?>

Die PHP-Funktion date () formatiert einen Zeitstempel zu einem besser lesbaren Datum und Uhrzeit. Versuchen Sie diesen Code für Sie Projekt,

 <?php
    $date=date_create('2014-10-20');
    date_time_set($date,12,20,55);
    echo date_format($date,'Y-m-d H:i:s');
    ?>

Ich weiß, es ist spät, aber wäre es am besten zu tun:

$date = date("Y-m-d");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top