Measure a deterministic duration in hours and minutes.

time A `TimeSpan` stores an amount of time, not a calendar date.

Time Spans

extraMinutes
TimeSpans.cs
Replay: real traced execution (multi-file project)
using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        int extraMinutes = 15;
        TimeSpan baseLength = TimeSpan.FromMinutes(45);
        TimeSpan total = baseLength + TimeSpan.FromMinutes(extraMinutes);

        string minutes = total.TotalMinutes.ToString(CultureInfo.InvariantCulture);
        string hours = total.TotalHours.ToString("0.00", CultureInfo.InvariantCulture);

        Console.WriteLine($"minutes={minutes}");
        Console.WriteLine($"hours={hours}");
    }
}
using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        int extraMinutes = 0;
        TimeSpan baseLength = TimeSpan.FromMinutes(45);
        TimeSpan total = baseLength + TimeSpan.FromMinutes(extraMinutes);

        string minutes = total.TotalMinutes.ToString(CultureInfo.InvariantCulture);
        string hours = total.TotalHours.ToString("0.00", CultureInfo.InvariantCulture);

        Console.WriteLine($"minutes={minutes}");
        Console.WriteLine($"hours={hours}");
    }
}
using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        int extraMinutes = 30;
        TimeSpan baseLength = TimeSpan.FromMinutes(45);
        TimeSpan total = baseLength + TimeSpan.FromMinutes(extraMinutes);

        string minutes = total.TotalMinutes.ToString(CultureInfo.InvariantCulture);
        string hours = total.TotalHours.ToString("0.00", CultureInfo.InvariantCulture);

        Console.WriteLine($"minutes={minutes}");
        Console.WriteLine($"hours={hours}");
    }
}
  1. extraMinutes ← 15, baseLength ← 00:45:00, total ← 01:00:00, minutes ← 60

    5{6    static void Main()7    {8        int extraMinutes→ 15 = 15; //@extraMinutes=0, 309        TimeSpan baseLength→ 00:45:00 = TimeSpan.FromMinutes(45);10        TimeSpan total→ 01:00:00 = baseLength00:45:00 + TimeSpan.FromMinutes(extraMinutes15);1112        string minutes→ 60 = total.TotalMinutes60.ToString(CultureInfo.InvariantCulture);13        string hours→ 1.00 = total.TotalHours1.ToString("0.00", CultureInfo.InvariantCulture);1415        Console.WriteLine($"minutes={minutes60}");16        Console.WriteLine($"hours={hours1.00}");17    }
    outputminutes=60
    hours=1.00
  1. extraMinutes ← 0, baseLength ← 00:45:00, total ← 00:45:00, minutes ← 45

    5{6    static void Main()7    {8        int extraMinutes→ 0 = 0;9        TimeSpan baseLength→ 00:45:00 = TimeSpan.FromMinutes(45);10        TimeSpan total→ 00:45:00 = baseLength00:45:00 + TimeSpan.FromMinutes(extraMinutes0);1112        string minutes→ 45 = total.TotalMinutes45.ToString(CultureInfo.InvariantCulture);13        string hours→ 0.75 = total.TotalHours0.75.ToString("0.00", CultureInfo.InvariantCulture);1415        Console.WriteLine($"minutes={minutes45}");16        Console.WriteLine($"hours={hours0.75}");17    }
    outputminutes=45
    hours=0.75
  1. extraMinutes ← 30, baseLength ← 00:45:00, total ← 01:15:00, minutes ← 75

    5{6    static void Main()7    {8        int extraMinutes→ 30 = 30;9        TimeSpan baseLength→ 00:45:00 = TimeSpan.FromMinutes(45);10        TimeSpan total→ 01:15:00 = baseLength00:45:00 + TimeSpan.FromMinutes(extraMinutes30);1112        string minutes→ 75 = total.TotalMinutes75.ToString(CultureInfo.InvariantCulture);13        string hours→ 1.25 = total.TotalHours1.25.ToString("0.00", CultureInfo.InvariantCulture);1415        Console.WriteLine($"minutes={minutes75}");16        Console.WriteLine($"hours={hours1.25}");17    }
    outputminutes=75
    hours=1.25