将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;
获取当天的时间并将其分配给TimeSpan
variables。