2012-07-30 5 views
0

Je travaille actuellement sur un projet où les affaires sont ouvertes et fermées en temps réel en utilisant des images-images de leurs images.PHP - Différents états basés sur le temps

Dans le code ci-dessous, je définis le fuseau horaire par défaut sur GMT et le format de l'heure sur 0000. Lorsque j'effectue le test, c'est bien sauf entre 0000 et 0959. Il semble ignorer le format de l'heure et ne pas mettre les zéros

De plus, existe-t-il un moyen plus efficace de faire ce qui suit?

Merci d'avance.

<?php date_default_timezone_set("Europe/London"); $time = date("Hi");?> 

.<?php if($time > 1600 && $time < 2329){echo "business1";} else{echo "business1:hover";}?> {background: url(http://website.com/business1.png) 0 -145px;} 
.<?php if($time > 1600 && $time < 2329){echo "business1:hover";} else{echo "business1";}?> {background: url(http://website.com/business1.png) 0 0;} 

.<?php if($time > 0800 && $time < 1659){echo "business2";} else{echo "business2:hover";}?> {background: url(http://website.com/business2.png) 0 -145px;} 
.<?php if($time > 0800 && $time < 1659){echo "business2:hover";} else{echo "business2";}?> {background: url(http://website.com/business2.png) 0 0;} 

Répondre

1

Une 0800 littérale en PHP is understood to be an octal number en raison de la principale 0. Vous ne devriez pas comparer les temps comme des chaînes pour commencer. Utilisez les horodatages UNIX pour la comparaison de temps:

$now = time(); 
if ($now > strtotime('16:00') ...) 
+0

J'ai effectué ce test: '$ i = 0800; echo $ i' et il sort '0', mais c'est parce que '8' est invalide en nombre octal. –

+0

@Wouter Exactement. – deceze

+0

Parfait, merci deceze ça marche un régal. – jamesakers

Questions connexes