Tentative d'émulation à la main du roulement d'une horloge de 24 heures (avec math ou utilisation des classes de timespan). La partie incrémentée était facile à comprendre comment rouler de 23h00 à 0h00 et de, mais le faire pour aller dans l'autre sens s'avère être vraiment déroutant. Voici ce que j'ai jusqu'à présent:C#: décrémentation d'une horloge à l'aide du module math
static void IncrementMinute(int min, int incr)
{
int newMin = min + incr,
hourIncrement = newMin/60;
//increment or decrement the hour
if((double)newMin % 60 < 0 && (double)newMin % 60 > -1)
hourIncrement = -1;
Console.WriteLine("Hour increment is {0}: ", hourIncrement);
}
Le problème que la constatation im est en marche arrière, si le module d'entre nombres, il ne sera pas décrémenter correctement. Exemple: il est 12:00 et vous soustrayez 61 minutes, nous savons que l'heure serait 10:59 car l'heure devrait reculer d'une heure pour aller de 12:00 à 11:59, puis de nouveau pour partir de 11:00 à 10:59. Malheureusement la façon de le calculer: newMin% 60 dans ce cas, ne récupère que le rollback de la première heure, mais puisque le second rollback est techniquement -1.0166 comme un reste, et puisque mod ne retourne qu'un nombre entier, son arrondi. Je suis sûr de manquer quelques maths de base ici, mais quelqu'un pourrait-il m'aider?
EDIT: J'ai écrit ceci un certain nombre de façons longues et courtes. Certains sont plus proches que d'autres, mais je sais que c'est plus simple qu'il n'y paraît. Je sais que celui-ci semble un peu "wtf était-il en train de faire", mais vous devriez être capable de voir ce que je suis en train de faire. Incrémenter une horloge et la faire basculer de 23:59 à 0:00 est facile. Aller en arrière s'est avéré être pas si facile. OK, voici le incrementMinute avec le rollover. Simple. Mais essayez d'aller en arrière. Ne fonctionne pas
static void IncrementMinute(int min, int incr)
{
int newMin = min + incr,
hourIncrement = newMin/60;
min = newMin % 60;
Console.WriteLine("The new minute is {0} and the hour has incremented by {1}", min, hourIncrement);
}
Pouvez-vous ajouter un peu plus de détails à ce, notamment un exemple d'utilisation et de l'état attendu de la variable globale? – steinar
Quelles sont les valeurs de 'min' et' incr'? – ChrisF
Je crois que j'ai donné ces exemples. Fondamentalement, comment puis-je coder la décrémentation pour avoir 12:00 - 0:61 = 10:59 et le faire fonctionner pour les incréments aussi bien. – Sinaesthetic