c#,日期时间转换

时间:2014-03-25 16:40:29

标签: c# datetime

我想将long中声明的变量更改为DateTime,但我该怎么办?

我使用了这样的日期时间转换,但它引发了异常:

  

“从'Int64'到'DateTime'的无效演员。”......

代码在这里..

private long TotalDuration;
TotalDuration += pa.CalcDurationForStereo(tx, rx, Ratio(format));

DateTime TotalDr = Convert.ToDateTime(TotalDuration);

TotalDuration首先声明为long,我想将其更改为datetime

我的问题是:在第2行,只有前2个只是用不同方法计算不同的任务......

5 个答案:

答案 0 :(得分:2)

持续时间与一天中的某个时间或某个日期不同,因此您甚至不应考虑将其转换或转换为DateTime。相反,请查看TimeSpan类型,您可以使用该类型正确表示持续时间。

您的CalcDurationForStereo()方法返回了什么?几秒钟?毫秒? 100纳秒间隔?根据返回值的比例,您可以在创建TimeSpan实例时调用不同的方法:

var duration = TimeSpan.FromSeconds(TotalDuration); // or...
var duration = TimeSpan.FromMilliseconds(TotalDuration); // or...
var duration = TimeSpan.FromTicks(TotalDuration); // 100 nanosecond intervals

Debug.WriteLine("Time passed: " + duration.ToString(@"hh\:mm\:ss"));

您可以使用该持续时间执行时间算术,添加或减去DateTimeDateTime.Now值。

// Adding a TimeSpan to a DateTime
var inAWhile = DateTime.Now + duration;

// Subtracting a TimeSpan from a DateTime
var aWhileAgo = DateTime.Now - duration;

答案 1 :(得分:0)

你最好看看这个:http://msdn.microsoft.com/en-us/library/system.convert.todatetime%28v=vs.110%29.aspx

您必须为Conver.ToDateTime提供有效参数(请参阅链接)

答案 2 :(得分:0)

如果long应该代表年份,那么你应该使用 DateTime(Int32,Int32,Int32)构造函数来传递任意(根据你的需要)月和日值:

DateTime TotalDr = new DateTime(1, 1, TotalDuration);

如果long是多少个,那么 DateTime(Int64)构造函数就足够了:

DateTime TotalDr = new DateTime(TotalDuration);

答案 3 :(得分:0)

目前还不完全清楚你要做的是什么,但也许你最好使用TimeSpan而不是DateTime的实例。

创建TimeSpan:

TimeSpan有一个构造函数,它接受一个表示滴答数的Int64。这可能是你所期待的吗?否则,有类似的构造函数来提供分钟数,秒数等。

从TimeSPan打印您需要的内容:

TimeSpan t = new TimeSpan(yourInt64Var);
string duration = t.ToString(@"hh\:mm\:ss");

从中计算日期:

如果您需要,也应该更容易从TimeSpan转换为DateTime。例如,这将为您提供一个DateTime,表示从现在开始yourInt64Variable刻度的日期:

TimeSpan duration = new TimeSpan(yourInt64Variable);
DateTIme calculatedDate = DateTime.Now.Add(duration);

答案 4 :(得分:0)

你可以尝试

DateTime TotalDr = new DateTime(TotalDuration);