Comment puis-je exécuter une fonction à l'heure & date?
Comment pouvez exécuter une fonction à un moment donné et la date.
Exemple, j'ai une fonction que sur le 12 de chaque mois à 10H, j'ai une surprise, et je tiens à leur dire ceci. Comment puis-je toujours avoir cette fonction en cours d'exécution, mais seulement d'exécuter à ce moment-là?
Cette page sera de fonctionnement 24/7, comme l'a fait remarquer, apparemment, cela peut avoir un effet de ma réponse.
Évidemment j'aurais à les comparer à contre-courant de la date, mais je ne suis pas sûr de la façon de vérifier si la date et l'heure actuelles a été appariés.
Shannon
comment savez-vous que ils vont être sur votre page web en particulier à l'heure et la date?
vérifier
en la comparant à la date actuelle?
Non je ne vais pas @JoeSimmons, je ne sais pas comment commencer cette..
vous allez rater mon point de vue. Vous allez avoir un code JS. Code JS s'exécute dans le navigateur. Cela implique que vous vous attendez à ce certains de la page à être en cours d'exécution si pas 24x7, puis au moins au moment de la "surprise" est censé se produire. Qui semblerait être un, umm, insolite application d'une page web.
vérifier
new Date().getDate()
pour la journée, et new Date().getHours()
pour l'heure. J'espère que vous n'attendez pas d'autres personnes à écrire tout le code pour vous.en la comparant à la date actuelle?
Non je ne vais pas @JoeSimmons, je ne sais pas comment commencer cette..
vous allez rater mon point de vue. Vous allez avoir un code JS. Code JS s'exécute dans le navigateur. Cela implique que vous vous attendez à ce certains de la page à être en cours d'exécution si pas 24x7, puis au moins au moment de la "surprise" est censé se produire. Qui semblerait être un, umm, insolite application d'une page web.
OriginalL'auteur Shannon Hochkins | 2013-09-30
Vous devez vous connecter pour publier un commentaire.
Il n'est pas conseillé d'utiliser
setInterval
parce qu'il est non-déterministe du comportement événements peut être manqué, ou le feu tout à la fois. Le temps va tomber de synchronisation, trop.Le code ci-dessous utilise à la place de
setTimeout
avec un une minute période, où chaque minute de la minuterie est redeviennent synchrones afin de tomber d'aussi près au format hh:mm:00.000 s possible.surprise(otherFunctionName);
. Avez-vous l'esprit de me demander pourquoi vous faites de cette façon?Oui, c'est vrai - le "pourquoi" est appelé "la séparation des préoccupations" - qui sépare le "quand" vous voulez quelque chose à se passer du "quoi".
Lorsque vous utilisez Modula pour calculer le reste de millisecondes, êtes-vous d'accord qu'il serait plus utile de mettre la valeur de minute en millisecondes comme une variable? Il serait de lire un peu mieux aussi, je suppose, mais je n'aime pas votre solution, il devrait serait tout à fait bien.
Merci @Alnitak , appris quelque chose de nouveau aujourd'hui 🙂
re: les années 60 -, je voudrais dire à votre discrétion. Personnellement, j'ai lu 60000 et de la transformation est instantanée. Notez que même cette méthode n'est pas sans risque si l'horloge système est réglée en dessous de ce code, le temporisateur à feu quand le temps n'est pas (encore) de 10:00:xx. C'est en fait assez dur pour atténuer la situation, si!
OriginalL'auteur Alnitak
Sur la page où je veux faire le check ajouter cette
VIOLON
Mise à jour - ajout
date.getSeconds == 0
de la limiter à feu seulement une à 10:00:00. Grâce à des commentaires ci-dessousce code a des bugs, l'un visible, et l'un invisible. L'invisible bug, c'est que ça va à plusieurs reprises l'alerte sur et sur jusqu'à ce que le temps pour atteindre 10:01.
comment pouvez-vous mettre à jour le violon.
encore une fois, vous êtes à commenter basée sur une hypothèse que je voulais pour exécuter la fonction qu'une seule fois, et aussi il n'est pas jusqu'à l'utilisateur de compléter l'écriture du code, c'est assez évident et tout simplement pour effacer l'intervalle une fois qu'il est passé.
si vous désactivez l'intervalle il ne se déclenche pas mois (en supposant que la page n'est pas rechargée entre temps).
OriginalL'auteur bhb
Vous pouvez utiliser quelque chose comme cela
Si vous voulez un peu à la minute (et pas toute heure, vous pouvez ajouter d.getMinutes()
pour
== '12'
- la sortie de.getDate()
est unoups c'est allé un peu vite là, fixe maintenant 🙂
OriginalL'auteur Kasper Franz
Vous pouvez instancier deux objets Date. Une pour le moment et un pour la prochaine occurrence de l'événement. Maintenant, c'est simple: new Date(). Pour le prochain exemple, vous pouvez faire une boucle à travers les options jusqu'à ce que vous trouver une plus grande que maintenant. Ou faire un peu plus sophistiqué date du temps de sorcellerie. Comparer les getTime() à la fois, et puis faire un setTimeout pour l'alerte.
EDIT:
Mise à jour depuis @Alnitak points qu'il y a un maximum le délai d'attente, voir setTimeout se déclenche immédiatement si le retard de plus de 2147483648 millisecondes.
OriginalL'auteur flup
peut-être que l'utilisation et la
iframe
avec meta refresh et d'entraînement de contenu, serveur de côtéou de l'utilisation de javascript setInterval
et
OriginalL'auteur gwillie