Videos streaming images jeux et buzz
Connexion






Perdu le mot de passe ?

Inscrivez-vous maintenant !
Menu Principal
Communauté

 Bas   Précédent   Suivant  Le sujet est verrouillé



Wiliwilliam
[PHP] savoir si une date est comprise entre 2 autres
 1  #1
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37191
Karma: 17455
J'ai une valeur timestamp en php
Je veux savoir si elle est comprise entre 17:00:00 et 17:59:59
J'ai un peu du mal à visualiser comment je pourrais, simplement, construire un if.

Je suis sur que la solution est très simple mais j'ai pas assez de recul donc j'ai pas d'idée. Il y a une fonction magique?
je suis en train de m’empêtrer dans dans date_diff et des dates_create... c'est assez laborieux.

Contribution le : 02/07/2018 19:08
_________________
Signaler

Invité
 1  #2
FantômeInvité
@Wiliwilliam

Ca ne marcherait pas avec genre:

$today_time = $timestamp (en secondes ou en centièmes) modulo (24*3600) ou 24*360000 si tu veux les centièmes.

if ( $today_time > 3600*17 && today_time < 3600 * 18) then la vie est belle (là aussi 360000 et pré-faire les multiplications si php ne le fait pas tout seul, je sais pas)

je pseudochie du php pardon, j'aime pas ce langage du coup j'y ai très peu touché, j'ai pas la syntaxe.

En terme de perfs c'est 1 allocation, 1 modulo, 2 comparaisons et 1 if, et tu sais que ça ne va pas te péter à la gueule, celle-là elle passe tes tests à travers les âges. Le seul risque c'est un modulo foireux mais là tu vas mettre une valeur numérique donc aucune chance. Je soutiens ton choix d'un petit if bien placé! Mon avis sur ces objets datetime à travers les langages c'est que c'est bien pour formatter une sortie, en dehors de ça c'est verbeux et on fait plus rapide, plus clair et plus court sans.

Contribution le : 02/07/2018 19:43
Signaler

Invité
 1  #3
FantômeInvité
Manipule des objets de type \Datetime et tu feras ce que tu veux 🙂 et ce plus simplement qu'avec des timestamp 🙂

Contribution le : 02/07/2018 22:48
Signaler

Wiliwilliam
 0  #4
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37191
Karma: 17455
@Piteur @yakow j'ai vu vos réponses hein, merci beaucoup! j'ai juste pas encore fini de tester 🙂 Je vous tiendrai au courant de ce que j'ai finalement décidé de faire.

Contribution le : 03/07/2018 15:10
_________________
Signaler

Wiliwilliam
 0  #5
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37191
Karma: 17455
@Piteur @yakow Finalement, et très bêtement, sans passer par des objets:

$date = "16:30:00";
$a = "16:00:00";
$b="17:00:00";

if (($date >= $a) && ($date =< $b))
{echo "ENTRE";}
else
{echo "PAS ENTRE";}

Je ne savais pas que ça pouvait marcher comme ça,  je me sens un peu très con.

Contribution le : 03/07/2018 15:33
_________________
Signaler

lvishd
 0  #6
Je poste trop
Inscrit: 28/11/2010 19:49
Post(s): 12664
Karma: 5543
Ce thread

Contribution le : 03/07/2018 15:51
_________________
Tu préfères les anciens smileys aux nouveaux? C'est par ici
Signaler

Koreus
 0  #7
Webhamster
Inscrit: 03/07/2002 23:58
Post(s): 75198
Karma: 36893
Citation :

@Wiliwilliam a écrit:
@Piteur @yakow Finalement, et très bêtement, sans passer par des objets:

$date = "16:30:00";
$a = "16:00:00";
$b="17:00:00";

if (($date >= $a) && ($date =< $b))
{echo "ENTRE";}
else
{echo "PAS ENTRE";}

Je ne savais pas que ça pouvait marcher comme ça,  je me sens un peu très con.


Il n'y pas de valeur timestamp dans ton code. Pour rappel, le timestamp est un entier et désigne le nombre de secondes écoulées depuis le 1er janvier 1970

Contribution le : 12/07/2018 17:44
_________________
Signaler

Wiliwilliam
 0  #8
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37191
Karma: 17455
@Koreus dans ce code, il n'y a pas de timestamp car j'ai réalisé que les opérateurs logiques fonctionnaient avec des formats type date. du coup mon timestamp d'origine, je l'ai converti avec la fonction date pour obtenir la variable $date dans le message que tu as quote 😉

Contribution le : 12/07/2018 17:57
_________________
Signaler


 Haut   Précédent   Suivant

 Le sujet est verrouillé 





Si vous êtes l'auteur d'un élément de ce site, vous pouvez si vous le souhaitez, le modifier ou le supprimer
Merci de me contacter par mail. Déclaré à la CNIL N°1031721.