Converteer DateTime naar TimeSpan

Ik wil een DateTime-instantie converteren naar een TimeSpan-instantie, kan dat?

Ik heb rondgekeken, maar ik kon niet vinden wat ik wil, ik vind alleen tijdsverschil. Meer specifiek wil ik een DateTime-instantie converteren naar milliseconden, om deze vervolgens op te slaan in een IsolatedStorage.


Antwoord 1, autoriteit 100%

U kunt gewoon de TimeOfDay-eigenschap van datum/tijd gebruiken, dit is van het type TimeSpan:

DateTime.TimeOfDay

Deze eigenschap bestaat al sinds .NET 1.1

Meer informatie: http://msdn.microsoft .com/en-us/library/system.datetime.timeofday(v=vs.110).aspx


Antwoord 2, autoriteit 14%

TimeSpan.FromTicks(DateTime.Now.Ticks)

Antwoord 3, autoriteit 10%

Als u een DateTimenaar een TimeSpanwilt converteren, moet u een basisdatum/-tijd kiezen – b.v. middernacht van 1 januari 2000, en trek het af van uw DateTime-waarde (en voeg het toe wanneer u terug wilt converteren naar DateTime).

Als je gewoon een DateTimenaar een getal wilt converteren, kun je de Tickseigenschap.


Antwoord 4, autoriteit 5%

Probeer de volgende code.

TimeSpan CurrentTime = DateTime.Now.TimeOfDay;

Krijg de tijd van de dag en wijs deze toe aan de variabele TimeSpan.


Antwoord 5, autoriteit 2%

Als je WPF en Xceed’s TimePicker (die DateTime lijkt te gebruiken?) als tijdspanner-kiezer gebruikt – zoals ik nu doe – kun je het totale aantal milliseconden (of een TimeSpan) eruit halen als volgt:

var milliseconds = DateTimeToTimeSpan(timePicker.Value).TotalMilliseconds;
    TimeSpan DateTimeToTimeSpan(DateTime? ts)
    {
        if (!ts.HasValue) return TimeSpan.Zero;
        else return new TimeSpan(0, ts.Value.Hour, ts.Value.Minute, ts.Value.Second, ts.Value.Millisecond);
    }

XAML :

<Xceed:TimePicker x:Name="timePicker" Format="Custom" FormatString="H'h 'm'm 's's'" />

Zo niet, dan denk ik dat je mijn DateTimeToTimeSpan() zo kunt aanpassen dat het ook rekening houdt met ‘dagen’, of iets anders doet als dateTime.Substract(DateTime.MinValue).TotalMilliseconds.

p>

Other episodes