将DateTime转换为TimeSpan

我想将一个DateTime实例转换为一个TimeSpan实例,有可能吗?

我环顾四周,但我找不到我想要的东西,只能find时间差异。 更具体地说,我想将一个DateTime实例转换为毫秒,然后将其保存到IsolatedStorage中。

要将DateTime转换为TimeSpan您应该select一个基准date/时间 – 例如2000年1月1日的午夜,并从DateTime值中减去它(并在您想要转换回DateTime时添加它)。

如果您只是想将DateTime转换为数字,则可以使用Ticks属性。

您可以使用date时间的TimeOfDay属性,即TimeSpantypes:

 DateTime.TimeOfDay 

自.NET 1.1以来,这个属性一直存在

更多信息: http : //msdn.microsoft.com/en-us/library/system.datetime.timeofday(v=vs.110).aspx

 TimeSpan.FromTicks(DateTime.Now.Ticks) 

如果你正在使用WPF和Xceed的TimePicker(这似乎是使用DateTime?)作为一个时间select器 – 就像我现在做的那样 – 你可以得到总毫秒数(或TimeSpan),如下所示:

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

如果没有,我想你可以调整我的DateTimeToTimeSpan(),以便它也需要“天”考虑或做像dateTime.Substract(DateTime.MinValue).TotalMilliseconds

尝试下面的代码。

  TimeSpan CurrentTime = DateTime.Now.TimeOfDay; 

获取当天的时间并将其分配给TimeSpanvariables。