9
votes

Obtenir le format de date comme «Y-M-D H: I: S» à partir d'une date PHP

Est-ce que quelqu'un connaît un moyen d'obtenir une chaîne d'une date contenant le format de la date?

<?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");
?>


0 commentaires

5 Réponses :


10
votes

Vous pouvez convertir la date de chaîne en horodatage avec strtotime et faire avec l'horodatage Quel que soit votre choix. ;)

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


1 commentaires

Cela me semble que s'il veut travailler à l'envers à une date à son format. (C'est-à-dire de "2009-10-16" à "Y-M-D")



5
votes

Autant que je sache, il n'y a pas de moyen garanti de travailler en arrière. La meilleure façon peut être d'essayer de faire correspondre des expressions régulières contre les formats bien connus (par exemple, \ d {2,4} [- /] \ d {2} [- /] \ d {2} Pour "ymd") mais je ne peux pas penser à un moyen facile de faire correspondre sans utiliser des expressions régulières. Vous devriez également vérifier que le format analysé a du sens et vous ne pouvez pas faire beaucoup de choses sur les dates ambiguënes comme le 2 mars 2009, qui pourrait être représentée comme 09/03/02 , 2009-03-02 , 02/03/09 , 03/02/09 , ou même 09/02/03 .


1 commentaires

La seule personne qui a réellement compris la question de l'OP!



6
votes

La fonction Date PHP () formate un horodatage à une date et une heure plus lisibles. Essayez ce code pour votre projet,

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


0 commentaires

4
votes

Je sais que c'est tard, mais il serait préférable de faire: xxx


0 commentaires

0
votes

En boucle et double citations xxx


0 commentaires