Je suis dans une situation où je souhaite ajouter des heures à une date et faire en sorte que la nouvelle date soit ajoutée à la journée de travail. J'ai bricolé une fonction pour déterminer cette nouvelle date, mais je veux m'assurer que je n'oublie rien.Quelle est la meilleure façon d'emballer le temps autour de la journée de travail?
Les heures à ajouter sont appelées "délai". Il pourrait facilement être un paramètre de la fonction à la place.
Veuillez envoyer vos suggestions. [Avertissement VB.NET]
Private Function GetDateRequired() As Date
''// A decimal representation of the current hour
Dim hours As Decimal = Decimal.Parse(Date.Now.Hour) + (Decimal.Parse(Date.Now.Minute)/60.0)
Dim delay As Decimal = 3.0 ''// delay in hours
Dim endOfDay As Decimal = 12.0 + 5.0 ''// end of day, in hours
Dim startOfDay As Decimal = 8.0 ''// start of day, in hours
Dim newHour As Integer
Dim newMinute As Integer
Dim dateRequired As Date = Now
Dim delta As Decimal = hours + delay
''// Wrap around to the next day, if necessary
If delta > endOfDay Then
delta = delta - endOfDay
dateRequired = dateRequired.AddDays(1)
newHour = Integer.Parse(Decimal.Truncate(delta))
newMinute = Integer.Parse(Decimal.Truncate((delta - newHour) * 60))
newHour = startOfDay + newHour
Else
newHour = Integer.Parse(Decimal.Truncate(delta))
newMinute = Integer.Parse(Decimal.Truncate((delta - newHour) * 60))
End If
dateRequired = New Date(dateRequired.Year, dateRequired.Month, dateRequired.Day, newHour, newMinute, 0)
Return dateRequired
End Sub
Remarque: Cela ne fonctionnera probablement pas si le délai est plus de 9 heures. Il ne devrait jamais changer de 3, à travers.
EDIT: Le but est de trouver la date et l'heure que vous obtenez à la suite de l'ajout de plusieurs heures à l'heure actuelle. Ceci est utilisé pour déterminer une valeur par défaut pour une date d'échéance d'une soumission. Je veux ajouter 3 heures à l'heure actuelle pour obtenir la date d'échéance. Cependant, je ne veux pas de dates d'échéance qui dépassent 17h le jour actuel. J'ai donc essayé de répartir les heures entre (aujourd'hui, jusqu'à 17 heures) et (demain, à partir de 8 heures), de sorte que l'ajout de 3 heures à 16 heures vous donnerait 19 heures, car 1 heure est ajoutée à la fin d'aujourd'hui et 2 heures les heures sont ajoutées au début de demain.
Ce n'est pas la réponse, mais il est un upvote. –