88 votes

Convertir DateTime en TimeSpan

Je veux convertir un DateTime en une instance TimeSpan par exemple, est-ce possible ?

J'ai cherché mais je n'ai pas trouvé ce que je voulais, je n'ai trouvé que le décalage horaire. Plus précisément, je veux convertir un DateTime en millisecondes, pour ensuite l'enregistrer dans un IsolatedStorage.

254voto

Vous pouvez simplement utiliser la propriété TimeOfDay de la date et de l'heure, qui est de type TimeSpan :

DateTime.TimeOfDay

Cette propriété existe depuis .NET 1.1.

Plus d'informations : http://msdn.microsoft.com/en-us/library/system.datetime.timeofday(v=vs.110).aspx

41voto

KoalaBear Points 653
TimeSpan.FromTicks(DateTime.Now.Ticks)

26voto

MiMo Points 7077

Pour convertir un DateTime à un TimeSpan vous devez choisir une date/heure de base - par exemple minuit le 1er janvier 2000 - et la soustraire de votre DateTime (et l'ajouter lorsque vous voulez reconvertir en DateTime ).

Si vous voulez simplement convertir un DateTime à un nombre, vous pouvez utiliser la fonction Ticks propriété.

13voto

Muhammad Awais Points 1735

Essayez le code suivant.

 TimeSpan CurrentTime = DateTime.Now.TimeOfDay;

Obtenez l'heure de la journée et attribuez-la à TimeSpan variable.

5voto

NoOne Points 489

Si vous utilisez WPF et le TimePicker de Xceed (qui semble utiliser DateTime ?) comme sélecteur d'intervalle de temps - comme je le fais actuellement - vous pouvez obtenir le total des millisecondes (ou un TimeSpan) comme suit :

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'" />

Si ce n'est pas le cas, je pense que vous pourriez ajuster ma fonction DateTimeToTimeSpan() pour qu'elle prenne également en compte les "jours" ou faire quelque chose du genre dateTime.Substract(DateTime.MinValue).TotalMilliseconds .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X