Exemple #1
0
 private void ResolveTime(long hod, long moh, long som, long nos)
 {
     if (ResolverStyle == ResolverStyle.LENIENT)
     {
         long totalNanos = Math.MultiplyExact(hod, 3600_000_000_000L);
         totalNanos = Math.AddExact(totalNanos, Math.MultiplyExact(moh, 60_000_000_000L));
         totalNanos = Math.AddExact(totalNanos, Math.MultiplyExact(som, 1_000_000_000L));
         totalNanos = Math.AddExact(totalNanos, nos);
         int  excessDays = (int)Math.FloorDiv(totalNanos, 86400_000_000_000L);                 // safe int cast
         long nod        = Math.FloorMod(totalNanos, 86400_000_000_000L);
         UpdateCheckConflict(LocalTime.OfNanoOfDay(nod), Period.OfDays(excessDays));
     }             // STRICT or SMART
     else
     {
         int mohVal = MINUTE_OF_HOUR.checkValidIntValue(moh);
         int nosVal = NANO_OF_SECOND.checkValidIntValue(nos);
         // handle 24:00 end of day
         if (ResolverStyle == ResolverStyle.SMART && hod == 24 && mohVal == 0 && som == 0 && nosVal == 0)
         {
             UpdateCheckConflict(LocalTime.MIDNIGHT, Period.OfDays(1));
         }
         else
         {
             int hodVal = HOUR_OF_DAY.checkValidIntValue(hod);
             int somVal = SECOND_OF_MINUTE.checkValidIntValue(som);
             UpdateCheckConflict(LocalTime.Of(hodVal, mohVal, somVal, nosVal), Period.ZERO);
         }
     }
 }