87

我想将DateTime实例转换为TimeSpan实例,可以吗?

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

4

5 回答 5

250

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

DateTime.TimeOfDay

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

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

于 2014-05-21T11:52:39.057 回答
36
TimeSpan.FromTicks(DateTime.Now.Ticks)
于 2014-05-05T09:30:55.957 回答
25

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

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

于 2013-07-31T00:02:16.253 回答
13

试试下面的代码。

 TimeSpan CurrentTime = DateTime.Now.TimeOfDay;

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

于 2016-06-18T10:50:06.937 回答
5

如果您使用 WPF 和 Xceed 的 TimePicker(它似乎使用 DateTime?)作为时间跨度选择器 - 就像我现在所做的那样 - 您可以像这样从中获取总毫秒数(或 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

于 2013-11-30T13:20:56.747 回答