J'ai ce genre de chaîne toute aide serait appréciée. P> p> 09: 00-18: 00 code>, je veux obtenir 2 \ DateTime. Le temps de la partie droite renvoie un objet et celui de la partie gauche renvoie un autre objet.
J'ai essayé d'utiliser Split, mais la solution ne semble pas super, c'est pourquoi je demande une autre solution.
C'est ma solution:
3 Réponses :
Si vous êtes sûr que votre entrée aura toujours la même structure, vous pouvez utiliser quelque chose comme ceci:
list($start, $end) = explode('-', str_replace(':','h','09:00-18:00'));
Est-il possible de vérifier si ma chaîne floue ce format "09: 00-18h00"?
Vous devez utiliser DateTime :: CreateFromFormat
$line = '09:00-18:00';
$split = explode('-', $line);
$start = DateTime::createFromFormat ( 'H:m', $split[0]);
$end = DateTime::createFromFormat ( 'H:m', $split[1]);
print_r($start);
echo '>>>';
print_r($end);
Est-il possible de vérifier si ma chaîne floue ce format "09: 00-18h00"?
Date_create et nouvelle DateTime reconnaissent HH: mm et HH: mm: ss Même sans spécifications de format. La date est définie sur la date actuelle.
if(preg_match('/^([01][0-9]|2[0-3]):[0-5][0-9]-([01][0-9]|2[0-3]):[0-5][0-9]$/',$line)){
//processing
}
else {
//format error
}
Est-il possible de vérifier si ma chaîne floue ce format "09: 00-18h00"?
Quels sont vos attentes de résultat? Pouvez-vous préciser.