J'ai la chaîne suivante:
08/07/2012 04:17:18
Comment puis-je vérifier s'il s'agit d'un type de données date
en utilisant PHP? Par exemple, si je vérifiais integer
, je ferais ceci: if(is_int($checkVar)
. Comment puis-je faire de même pour un format de date de ce type?
3 réponses
date_parse($theString)
Renverra un tableau du format suivant
Array
(
[year] => 2006
[month] => 12
[day] => 12
[hour] => 10
[minute] => 0
[second] => 0
[fraction] => 0.5
[warning_count] => 0
[warnings] => Array()
[error_count] => 0
[errors] => Array()
[is_localtime] =>
)
Ou false s'il ne trouve pas de date. si cela suffit à vos besoins, utilisez ceci!
if (strtotime($date) !== false)
Strtotime () retourne numérique si la date est valide. Notez que strtotime () et date_parse () fonctionnent également sur des chaînes, donc si vous validez pour une base de données et que vous ne voulez pas de choses comme
March 1st 2011
Pour travailler, vous ne pouvez pas utiliser ces fonctions. Pour une date mysql que je fais habituellement
$date = date('Y-m-d',strtotime($date));
Qui met en forme n'importe quel format de date dans le format nécessaire. Si la date $ d'origine n'était pas au format de date, la date $ résultante sera fausse.
Vous ne vérifiez pas vraiment si une variable est de type date
. Vous avez une chaîne dans un format très spécifique et vous voulez vous assurer qu'elle est conforme à ce format.
Une façon de faire est d'utiliser une expression régulière (preg_match()
). Il est assez simple d'obtenir quelque chose de raisonnablement correct, mais cela peut être difficile si vous vous souciez également des années bissextiles, des sauts d'heure d'été ou si vous n'êtes pas d'accord avec quelqu'un qui spécifie le 30 février.
L'objet DateTime
peut vous aider un peu avec cela. Vous pouvez analyser les composants individuels de votre date, l'ajouter au constructeur DateTime
puis voir si le constructeur DateTime
propose quelque chose de similaire à l'entrée d'origine.
Par exemple, je suis assez sûr que DateTime
convertira manuellement le 31 avril (qui n'existe pas) en 1er mai. Vous pouvez donc vérifier si votre mois d'entrée (4
) correspond au mois que DateTime
utilise (5
). Si tous ces éléments correspondent et qu'il n'y a pas eu d'erreur, il s'agit d'une chaîne valide dans votre format.
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.