C# Academy · Lektion

TimeSpan och varaktigheter

Mät tidsintervall.

Lektion 3 av 413 steg

TimeSpan och varaktigheter är en gratis lektion i C# Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C# Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C# Academy innehåller totalt 4 lektioner.

Vad är en TimeSpan

Medan DateTime är en tidpunkt representerar TimeSpan en tidslängd, till exempel 2 timmar eller 90 minuter.

Det är ett tidsintervall utan koppling till kalendern. Det används för resultat från stoppur, tidsgränser och tidsintervallet mellan två datum.

Skapa en TimeSpan

En konstruktor tar emot timmar, minuter och sekunder: new TimeSpan(hours, minutes, seconds).

new TimeSpan(1, 30, 0) motsvarar alltså en timme och trettio minuter. Värdet visas i det tydliga formatet h:mm:ss.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = new TimeSpan(1, 30, 0);
        Console.WriteLine(span);
    }
}

Fabriksmetoder

Ofta blir koden mer lättläst om en fabriksmetod används. TimeSpan.FromMinutes(90) skapar ett tidsintervall på 90 minuter.

Det finns motsvarande hjälpmetoder: FromHours, FromSeconds, FromDays och FromMilliseconds.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromMinutes(90);
        Console.WriteLine(span);
    }
}

Totalvärden jämfört med komponentvärden

TimeSpan har två grupper av egenskaper. Hours, Minutes och Seconds är de uppdelade komponenterna.

Varianterna med Total..., till exempel TotalMinutes, uttrycker hela tidsintervallet i en enda enhet som ett decimaltal.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromMinutes(90);
        Console.WriteLine(span.Hours);
        Console.WriteLine(span.TotalMinutes);
    }
}

Komponentvärden och totalvärden förklarade

För 90 minuter är Hours 1 och Minutes 30, eftersom tidsintervallet består av 1 timme och 30 minuter.

Men TotalHours är 1.5 och TotalMinutes är 90, eftersom de räknar hela tidsintervallet i en enda enhet.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromMinutes(90);
        Console.WriteLine(span.TotalHours);
    }
}

Subtrahera två datum

När ett DateTime-värde subtraheras från ett annat blir resultatet en TimeSpan.

Detta är det vanliga sättet att ta reda på hur lång tid som gått mellan två tidpunkter, till exempel hur länge en händelse varade.

using System;

class Program
{
    static void Main()
    {
        DateTime start = new DateTime(2024, 3, 5, 9, 0, 0);
        DateTime end = new DateTime(2024, 3, 5, 11, 30, 0);
        TimeSpan diff = end - start;
        Console.WriteLine(diff.TotalHours);
    }
}

Addera TimeSpan-värden

TimeSpan-värden kan adderas eller subtraheras med de vanliga operatorerna + och -.

Genom att kombinera två tidsintervall får man ett längre intervall, vilket är användbart när flera tidsperioder ska summeras.

using System;

class Program
{
    static void Main()
    {
        TimeSpan a = TimeSpan.FromMinutes(45);
        TimeSpan b = TimeSpan.FromMinutes(15);
        Console.WriteLine((a + b).TotalMinutes);
    }
}

Negativa tidsintervall

En TimeSpan kan vara negativ om sluttiden ligger före starttiden eller efter en subtraktion.

Metoden Duration returnerar absolutvärdet, och Negate ändrar tecknet. De är användbara när bara tidsintervallets storlek är relevant.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromHours(-3);
        Console.WriteLine(span.Duration().TotalHours);
    }
}

Jämföra tidsintervall

TimeSpan-värden kan jämföras med <, > och ==, precis som tal.

Det gör det möjligt att kontrollera om ett tidsintervall är längre än ett annat, till exempel för att upprätthålla en högsta tillåten tidsgräns.

using System;

class Program
{
    static void Main()
    {
        TimeSpan limit = TimeSpan.FromHours(2);
        TimeSpan used = TimeSpan.FromMinutes(150);
        Console.WriteLine(used > limit);
    }
}

Noll och konstanter

TimeSpan.Zero representerar ingen förfluten tid och är en praktisk startpunkt för summeringar.

Det finns också TimeSpan.MinValue och TimeSpan.MaxValue för de yttersta gränserna för ett tidsintervall.

using System;

class Program
{
    static void Main()
    {
        TimeSpan total = TimeSpan.Zero;
        total += TimeSpan.FromMinutes(10);
        Console.WriteLine(total.TotalMinutes);
    }
}

Formatera en TimeSpan

En TimeSpan kan formateras med en anpassad sträng. @"hh\:mm" visar till exempel timmar och minuter.

Snedstrecken escaperar kolonet så att det visas bokstavligt. För snabb utdata räcker standardmetoden ToString vanligtvis.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = new TimeSpan(2, 5, 0);
        Console.WriteLine(span.ToString(@"hh\:mm"));
    }
}

Snabbtest

En TimeSpan är 90 minuter. Vilken egenskap returnerar värdet 1.5?

Sammanfattning

En TimeSpan är ett tidsintervall. Skapa det med new TimeSpan(...) eller fabriksmetoder som FromMinutes.

Komponentegenskaper (Hours) skiljer sig från egenskaper med Total.... Om två DateTime-värden subtraheras får man en TimeSpan, och tidsintervall kan adderas, jämföras och formateras.

Gratis att börja

Lär dig C# med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
93
Lektioner
346

Vanliga frågor

Är lektionen ”TimeSpan och varaktigheter” gratis?

Ja – hela texten till ”TimeSpan och varaktigheter” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C# Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C# Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”TimeSpan och varaktigheter”?

Mät tidsintervall. Ni övar på C# Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig C# Academy?

Du behöver inga förkunskaper. Utbildningen i C# Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”TimeSpan och varaktigheter”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här C# Academy-lektionen?

Ja. Varje C# Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Skapa DateTime-värden
  2. Formatera datum
  3. TimeSpan och varaktigheter
  4. Datumaritmetik
← Tillbaka till C# Academy