将DateTime转换为TimeSpan

时间:2013-07-30 23:57:11

标签: c# .net

我想将DateTime实例转换为TimeSpan实例,是否可能?

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

5 个答案:

答案 0 :(得分:169)

您可以使用日期时间的TimeOfDay属性,即TimeSpan类型:

DateTime.TimeOfDay

此属性自.NET 1.1以来一直存在

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

答案 1 :(得分:16)

TimeSpan.FromTicks(DateTime.Now.Ticks)

答案 2 :(得分:14)

要将DateTime转换为TimeSpan,您应该选择基准日期/时间 - 例如2000年1月1日午夜,并从DateTime值中减去它(当你想转换回DateTime时添加它)。

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

答案 3 :(得分:5)

请尝试以下代码。

 TimeSpan CurrentTime = DateTime.Now.TimeOfDay;

获取当天的时间并将其分配给TimeSpan变量。

答案 4 :(得分:4)

如果您使用WPF和Xceed的TimePicker(似乎使用DateTime?)作为时间跨度选择器 - 我现在就做 - 您可以像这样得到总毫秒(或TimeSpan):< / p>

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那样。