L'algorithme nécessaire pour calculer la différence entre deux temps
J'ai une heure déroulant de sélection 0-23
et à quelques minutes déroulant de sélection 0-59
pour Start time
et End time
respectivement (donc quatre contrôles).
Je suis à la recherche d'un algorithme pour calculer la différence de temps à l'aide de ces quatre valeurs.
Car ils ne sont pas stockées dans la fantaisie de la date/heure contrôles de sélection, je ne pense pas que je peux utiliser n'importe quel standard de la date/heure de fonctions de manipulation.
Comment puis-je calculer la différence entre les deux temps?
- "donc pas de langue ou de script peut être utilisé" - quoi?
- Me semble qu'il serait de retour à la plume et du papier alors... X)
- Comment mettre en œuvre un algorithme sans un "langage de script ou de"
- Les gars, ne Peut pas utiliser la langue ou le script, parce que mon vieux développeur a conçu un formulaire avec une heure et les minutes déroulant pour deux de sélection de l'heure. C'est juste une zone de liste modifiable , pas de sélecteur de date. Donc, je n'ai pas d'option pour utiliser les fonctions de date. C'est pourquoi le besoin de l'algorithme , je sais que c'est mal de tête 🙂 @Bryon, Comme dans les vieux jours, nous avons utilisé pour écrire du code pour trouver bizarre ou même de la nsa, ou de générer la suite de Fibonacci ou nombres premiers 🙂
- Donc vous voulez dire que vous ne pouvez pas utiliser les fonctions de date, oui? Sans doute la comparaison, la multiplication et la soustraction sont d'accord? 🙂
- Sens. Cette question fait aucun.
- J'ai nettoyé un peu en fonction de ce que vous avez dit dans vos commentaires. Veuillez confirmer que le but de la question n'a pas été changé.
- Merci, C'est bon..
Vous devez vous connecter pour publier un commentaire.
De ce pseudo-code vous donne l'algorithme de travailler sur la différence en quelques minutes.
Il suppose que, si l'heure de départ est après l'heure de fin, l'heure de début a été fait le jour précédent.
La
startx
etendx
valeurs sont le nombre de minutes depuis minuit.C'est essentiellement faire:
N'en soyez pas si sûr cependant que vous ne pouvez pas utiliser la date/l'heure de fonctions de manipulation. Vous pouvez trouver que vous pouvez facilement construire une date/heure et de calculer la différence avec quelque chose comme:
bien que ce n'est probablement pas nécessaire pour votre scénario simple. Je collerais avec le pseudo-code que j'ai donné ci-dessus, sauf si vous vous retrouver à faire certains plus délicat de la date/heure de la manipulation.
Ensuite, si vous voulez tourner la durée (en minutes) en heures et en minutes:
Cela permettra de calculer la durée en minutes, y compris l'année en tant que facteur de
D'abord, vous devez vérifier pour voir si l'heure de fin est supérieure ou égale à l'heure de début pour éviter les problèmes. Pour ce faire, vous devez d'abord vérifier si le End_Time_Hour est plus grand que Start_Time_Hour. Si elles sont égales, vous serait plutôt de vérifier pour voir si End_Time_Min est supérieure ou égale à Start_Time_Min.
Ensuite, vous souhaitez soustraire Start_Time_Hour de End_Time_Hour. Ensuite, vous soustrayez Start_Time_Min de End_Time_Min. Si la différence des minutes est inférieure à 0 vous décrémenter l'heure de décalage par l'un et ajouter la différence minutes à 60 ans (ou 59, test). La concaténation de ces deux ensemble et vous devriez être tous ensemble.
équation simple devrait vous aider:
Cela vous donne la durée en heures et minutes
Si vous avez une fonction qui renvoie le nombre de jours depuis quelques date de début (par exemple, dayssince1900) il vous suffit de convertir les deux dates de secondes depuis cette date, faire de l'ABS(d1-d2) puis de convertir les secondes en arrière à n'importe quel format que vous voulez par exemple HHHH:MM:SS
Simple par exemple
Hum: Pas si simple si vous avez à prendre en compte les secondes intercalaires, les astronomes sont désireux de mettre de temps en temps.