2013-07-30 20 views
38

DateTime örneğini bir TimeSpan örneğine dönüştürmek istiyorum, mümkün mü?DateTime to TimeSpan için

Etrafa baktım ama ne istediğimi bulamadım, sadece zaman farkı buluyorum. Daha spesifik olarak, bir DateTime örneğini milisaniyeye dönüştürmek ve sonra bunu bir IsolatedStorage içine kaydetmek istiyorum.

cevap

11

DateTime'u TimeSpan'a dönüştürmek için temel tarih/saat seçmelisiniz - ör. 1 Ocak 2000 gece yarısı ve DateTime değerinizden çıkartın (ve geri DateTime'a dönüştürmek istediğinizde ekleyin).

DateTime numarasını bir numaraya dönüştürmek isterseniz, Ticks özelliğini kullanabilirsiniz.

3

WPF ve Xceed'in TimePicker'ı (ki bu da DateTime kullanıyormuş gibi görünüyor) zaman çizelgesi seçici olarak kullanılıyorsa, şu anda yaptığım gibi toplam milisaniye (veya bir TimeSpan) çıkarıyorsunuz:

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

değil, ben sadece o da dikkate 'gün' alır, böylece benim DateTimeToTimeSpan() ayarlamak veya dateTime.Substract(DateTime.MinValue).TotalMilliseconds gibi şey yapması sanırım.

13
TimeSpan.FromTicks(DateTime.Now.Ticks) 
+2

DateTime.TimeOfDay daha iyidir –

+7

Bu, bağlıdır. 'TimeOfDay' yalnızca Zaman'dır ve o tarihin' TimeSpan'daki yerini içermez. – KoalaBear

117

sadece ZamanGeçişi türüdür tarih zamanın TimeOfDay özelliğini kullanabilirsiniz: http://msdn.microsoft.com/en-us/library/system.datetime.timeofday(v=vs.110).aspx

+2

Bu çok daha iyi bir cevap, teşekkürler. – Jeremy

+2

DateTime.Now.TimeOfDay || DateTime.Today.TimeOfDay – espaciomore

+3

Ağrılı ve açık bir şekilde anlaşılır olmak için 'DateTime myDateTime = DateTime.UtcNow; veya bir öğeye * DateTime'ın * belirli bir örneğini almak için kullanırsanız **' myDateTime'ı kullanabilirsiniz. .TimeOfDay; '**. Alternatif olarak, aracıyı kesebilir ve "** DateTime.UtcNow.TimeOfDay" **, natch diyebilirsiniz. (Yani, DateTime.TimeOfDay', geçerli örnek kod, "geçersiz" ve bir anlamda "DateTime.UtcNow" gibi bir değer vermeyecektir, bu biraz mantıklı. Belirli bir 'DateTime' için "TimeOfDay" değerini yakalayın.) – ruffin

2
:

DateTime.TimeOfDay 

Bu özellik .NET 1.1

fazla bilgi yana civarında olmuştur

Aşağıdaki kodu deneyin.

TimeSpan CurrentTime = DateTime.Now.TimeOfDay; 

Günün saatini alın ve TimeSpan değişkenine atayın.