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?

php
1
birdybird03 28 nov. 2017 à 00:37

3 réponses

Meilleure réponse
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!

2
Ralph Thomas Hopper 27 nov. 2017 à 21:43
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.

0
Danial 27 nov. 2017 à 22:11

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.

1
Evert 27 nov. 2017 à 22:06
47520224