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? P> Le plus proche que je suis venu à faire cela est Un mélange de strtotime () code> 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.
date_parse_from_format () code> et
mktime () code> p>
3 Réponses :
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']); }
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 () code> et
mktime () code> de la même manière que vous avez montré votre code.
date_parse_from_format () code> 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.
Si vous avez PHP 5.3:
$date = DateTime::createFromFormat('d/m/Y H:i:s', '03/05/2011 16:33:00'); echo $date->getTimestamp();
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 ();
strtotime code> suppose que c'est une date / heure américaine lors de l'utilisation de
/ code> comme séparateur. Pour que cela pense que c'est une date / heure euro, utilisez
- code> ou
. Code> comme séparateur de date. Vous pouvez modifier le
/ code> s sur
- code> s ou
. Code> s avec un simple
str_replace () code> p>
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.