将Ticks转换为TimeSpan

时间:2017-05-31 08:34:07

标签: c# type-conversion timespan date-manipulation

我想将Ticks转换为TimeSpan。

我需要ConvertToTimeSpan功能,如下所示。

var ticks = 10000;
TimeSpan ts = ConvertToTimeSpan(ticks);  // not working
Console.WriteLine(ts);  // expected output --> {00:00:00.0010000}

3 个答案:

答案 0 :(得分:6)

有一个TimeSpan(Int64)构造函数,它接受许多刻度:

https://msdn.microsoft.com/en-us/library/zz841zbz(v=vs.110).aspx

  

将TimeSpan结构的新实例初始化为指定的刻度数。

在.NET中,Ticks始终表示为Int64,因此您不应使用var ticks = 1,因为它是隐式Int32,因此您最终会使用错误的方法超载。而是指定显式类型声明或长文字值(var ticks = 1L)。

答案 1 :(得分:3)

您需要.NET Framework中已存在的TimeSpan.FromTicks(Int64)方法。

此方法使用其他答案中建议的constructor时间跨度。如果您想深入挖掘,可以在reference source code

中验证

答案 2 :(得分:1)

你还没有告诉ConvertToTimeSpan方法内部发生了什么,无论如何不需要额外的方法来实现这一点,你可以使用TimeSpan类的构造函数来做这项工作。请查看此Example并尝试使用以下代码:

var ticks = 1;
TimeSpan ts = new TimeSpan(ticks);  
Console.WriteLine(ts);