2009-11-30 6 views
0

J'ai deux fois start_time = 2009-12-01 21h30 et end_time = 2009-12-01 23h30 (AAAA-MM-JJ) .Si l'utilisateur fait une activité entre ces heures c.-à-d. Au 2009-12-01 10.30 pm je dois lui dire que vous n'êtes pas valide pour faire cette activité ... Les deux fois 2009-12-01 21h30 et 2009-12-01 23h30 est tiré de la base de données.Le temps 2009-12-01 10.30 est donné par l'utilisateur.Trouver le temps entre deux intervalles de temps?

Ma question est de savoir comment puis-je trouver le temps 22:30 est inbetween est survenue 21:30-23:30 ...

je fais mon programme en PHP

Répondre

1

Utilisez strtotime() pour convertir les chaînes en Unix secondes. Alors simple

if ($time1 < strtotime(10:30...) && strtotime(10:30...) < $time 2) 
{ 
    //do your stuff; 
} 
+0

Est-ce que c'est correct à la fois que vous l'avez vérifié en tant que < – svk

1
$start = strtotime($start_time); 
$end = strtotime($end_time); 
$user = strtotime($user_time); 

if($user > $start && $user < $end) die('You are not allowed'); 
0

converti "2009-12-01 21:30" et "2009-12-01 23:30" à timestamp unix, puis comparer avec ceux <:

if ($start <= $event && $event < $end) 
    complain(); 
} else { 
    proceed(); 
} 
+0

PHP ne possédait-il pas déjà une classe DateTime appropriée? – Joey

+0

Je pense que vous avez perdu ceci: '{' –

+0

Je pense qu'il est seulement disponible pour les versions php supérieures ou égales à 5.3 – AntonioCS

1

Vous pouvez utiliser requête de base de données ou PHP. En PHP:

$timeStart = strtotime('2009-12-01 11.30'); 
$timeEnd = strtotime('2009-12-01 09.30'); 
$time = strtotime('2009-12-01 10.30'); 

if($time > $timeStart && $time < $timeEnd) { 
    echo "Between given times."; 
} 
0

Il n'y a pas besoin de faire de la manipulation de PHP excessive lorsque vous pouvez simplement utiliser une requête SQL:

SELECT 1 FROM your_table_name WHERE '2009-12-01 10:30:00' BETWEEN start_time AND end_time; 

Cela renverra 1 ou résultat (s) si l'activité de l'utilisateur se produit entre n'importe quelle heure de début et de fin dans la base de données. Veuillez noter que vous devriez avoir un index de préfixe le plus à gauche sur votre table pour (start_time, end_time).

Vérifiez simplement les résultats de votre requête. Si vous avez un nombre de lignes supérieur ou égal à 1, vous savez que l'activité de l'utilisateur se situe entre les heures de début et de fin dans votre base de données.

Questions connexes