7
votes

PHP Strtotime () fonction qui accepte un format?

strtotime () dans PHP fonctionne bien si vous pouvez le fournir avec un format de date, il comprend et peut convertir, mais par exemple, vous lui donnez une date au Royaume-Uni, il ne parvient pas à donner le bon horodatage UNIX.

Y a-t-il une fonction PHP, officielle ou non officielle, qui peut accepter une variable de format qui indique la fonction dans laquelle le format est passé de la date et de l'heure?

Le plus proche que je suis venu à faire cela est Un mélange de date_parse_from_format () et mktime () xxx


0 commentaires

3 Réponses :


2
votes

Vous recherchez Strptime , je pense. Vous pouvez l'utiliser pour analyser la date, puis utiliser mktime si vous avez besoin d'un horodatage UNIX.

function strotimeformat($date, $format) {
  $d = strptime($date, $format);
  return mktime($d['tm_hour'], $d['tm_min'], $d['tm_sec'],
                $d['tm_mon'], $d['tm_mday'], $d['tm_year']);
}


4 commentaires

Non, je ne suis pas, je cherche quelque chose qui retourne un horodatage UNIX à une gamme de valeurs. Plus Strptime n'est pas implémenté sur Windows, donc pas une solution idéale.


D'accord. J'ai mis à jour ma réponse avec une fonction pour vous donner un horodatage de toute façon (ne fonctionne toujours pas sur Windows). Vous pouvez bien sûr effectuer certaines sous-chaînes + Stros Travailler (ou exploser + réarriver + implorez) pour en faire une date américaine.


Comme mentionné dans ma question, je utilise déjà une combinaison de date_parse_from_format () et mktime () de la même manière que vous avez montré votre code. date_parse_from_format () fonctionne pour tous les systèmes mais fonctionne uniquement sur php 5.3> = Wereas Strptime fonctionne sur une version antérieure mais pas Windows. Je laisserai la question ouverte pendant quelques jours pour voir si d'autres réponses entrent.


Avez-vous absolument besoin d'avoir un argument de format? Peut-être que vous pouvez simplement jeter date_parse_from_format () et utiliser sscanf () à la place? Cela vous donnerait un soutien sur la plupart des plates-formes.



23
votes

Si vous avez PHP 5.3:

$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00');
echo $date->getTimestamp();


2 commentaires

Je cherche à retourner un horodatage UNIX, pas la date d'un autre format de chaîne.


@ADEWREW - MEZE a changé sa réponse, il n'a pas initialement eu GetTimeStamp ();



0
votes

strtotime suppose que c'est une date / heure américaine lors de l'utilisation de / comme séparateur. Pour que cela pense que c'est une date / heure euro, utilisez - ou . comme séparateur de date. Vous pouvez modifier le / s sur - s ou . s avec un simple str_replace ()


1 commentaires

Lisez la question ... Je suis tout à fait au courant de ce que Strtotime est capable et comment travailler. Mais ce n'est pas ce que je demande, je demande une fonction qui accepte une date dans n'importe quel format avec une chaîne indiquant le format que la date est entrée et renvoie un horodatage UNIX.