J'ai une date / heure comme ci-dessous. L'heure du vote est l'heure à laquelle l'utilisateur a voté la dernière fois. L'utilisateur ne peut à nouveau voter qu'après 15 minutes
current_datetime = 2020-06-27 10:07:29.906931 voted_datetime = 2020-06-25 12:59:56.554216 time_diff = current_datetime - voted_datetime which gives the output: time_diff = 1 day, 21:07:33.352715
Après avoir obtenu time_diff , ce que je veux faire, c'est vérifier si time_diff est supérieur plus de 15 minutes. Si time_diff est supérieur à 15 minutes, je veux retourner true sinon renvoyer le temps restant à 15 minutes afin de pouvoir passer le temps restant au modèle et afficher le compte à rebours en utilisant javascript. Toute suggestion ou article connexe sera utile.
3 Réponses :
Il semble que vous ayez déjà presque tout ce dont vous avez besoin. La seule chose qui reste est de définir la valeur de retour et l'instruction conditionnelle. Je suggérerais:
def view(request):
# ... all your logic
time_diff = current_datetime - voted_datetime
minutes_to_vote = 0 if time_diff.seconds / 60 > 15 else 15 - time_diff.seconds // 60
return render(request, 'foo.html', {'minutes_to_vote': minutes_to_vote}
Ensuite, dans la partie JS, vous pouvez vérifier si le minutes_to_vote est égal à zéro, auquel cas l'utilisateur peut voter. Sinon, affichez le compte à rebours souhaité en commençant par la valeur minutes_to_vote .
En soustrayant 2 objets datetime, vous obtenez un objet timedelta. Ensuite, vous vérifiez si ce délai est supérieur à un délai de 15 minutes.
import datetime
from time import sleep
voted = datetime.datetime.now() # Example datetime
sleep(3)
current = datetime.datetime.now() # Example datetime
elapsed = current - voted
fifteen = datetime.timedelta(minutes=15)
if elapsed >= fifteen:
return True
else:
return elapsed
Quelle est la raison de l'utilisation de sleep (3)
@FurkanSiddiqui Je donne juste un exemple de dates datetime. Cela signifie que je viens de créer l'objet datetime 3 secondes après l'autre. Vous pouvez le changer à 15 ou plus et il retournera True.
from datetime import timedelta
def check_time_diff(voted_datetime, current_datetime):
time_diff = current_datetime - voted_datetime
return True if time_diff > timedelta(minutes=15) else time_diff.seconds
Juste pour clarifier, vous demandez comment déterminer si time_diff est supérieur à 15 minutes?
Est-ce que cela répond à votre question? trouver le décalage horaire en secondes sous forme d'entier avec python a>
@ 12944qwerty oui. Si time_diff n'est pas supérieur à 15 minutes, renvoyer le temps restant comme (remianing_time = 15 minutes - time_diff) afin que je puisse afficher le temps restant en utilisant le compte à rebours javascript.