2014-03-25 240 views
-1

我想將long中聲明的變量更改爲DateTime,但我該怎麼辦?c#,日期時間轉換

我使用的日期時間轉換這樣的,但它拋出一個異常:

「從‘的Int64’到‘日期時間’無效投」 ......

的代碼是在這裏..

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

DateTime TotalDr = Convert.ToDateTime(TotalDuration); 

TotalDuration首先聲明爲長,我想將其更改爲datetime

我的問題是:在2號線只有第2只是在工作的不同任務的不同方法的計算...

+3

什麼是'TotalDuration'回來了,是不是秒,毫秒,分鐘,蜱??? – Habib

+0

對不起第3行...它應該以hh:mm:ss格式返回 – Andarge

+1

您確定需要'DateTime'嗎?而不是'TimeSpan'?至少爲了計算? – Kjartan

回答

0

,那麼你應該使用日期時間(的Int32,的Int32,Int32)將構造函數傳遞任意如果長時間thicks的那麼的DateTime(Int64)將數構造足以

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

的月份和日期(根據您的需要)值
DateTime TotalDr = new DateTime(TotalDuration); 
+0

什麼是1,1並且可以DateTime TotalDr = new DateTime(TotalDuration);作品?? – Andarge

+0

1,1是月份日期和月份本身的任意值。如果你的長期代表一年(例如,1976年),這是有效的。 如果長整數是刻度的數量(「格里曆中00:00:00.000處0001自1月1日起經過100納秒間隔的數量所表示的日期和時間」),則新DateTime (TotalDuration)將適用於您的情況。 – PetarPenev

0

這並不完全清楚你正在嘗試做什麼,但也許你會更好使用TimeSpan而不是DateTime的實例。

創建一個時間跨度:

時間跨度有一個構造函數一個Int64,代表的蜱數量。這可能是你在看什麼?否則,會有類似的構造函數來提供分鐘數,秒數等。

打印您從時間跨度需要的東西:

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

從中計算日期:

它應該是更容易從TimeSpan轉換爲DateTime也一樣,如果你需要的。作爲一個例子,這會給你代表在yourInt64Variable蜱日期日期時間從現在開始:

TimeSpan duration = new TimeSpan(yourInt64Variable); 
DateTIme calculatedDate = DateTime.Now.Add(duration); 
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; 
0

您可以嘗試

DateTime TotalDr = new DateTime(TotalDuration);