我想将long中声明的变量更改为DateTime
,但我该怎么办?
我使用了这样的日期时间转换,但它引发了异常:
“从'Int64'到'DateTime'的无效演员。”......
代码在这里..
private long TotalDuration;
TotalDuration += pa.CalcDurationForStereo(tx, rx, Ratio(format));
DateTime TotalDr = Convert.ToDateTime(TotalDuration);
即TotalDuration
首先声明为long,我想将其更改为datetime
我的问题是:在第2行,只有前2个只是用不同方法计算不同的任务......
答案 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"));
您可以使用该持续时间执行时间算术,添加或减去DateTime
等DateTime.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);