2017-04-12 19 views
-1

我想添加持續時間到我的日期時間變量。我正在閱讀一個csv文件的持續時間。持續時間格式爲0:29:40或1:29:40。當我將此添加到datetime變量時,它會給出格式不正確的例外。我如何使用這種格式添加持續時間。以前我的持續時間是一個簡單的整數,如「6」或「7」,但現在格式是這個「0:29:40」我不知道如何改變我的代碼來適應這種格式。在c中使用addHours()添加時間到目前爲止#

以前我是做這個

double hours = Convert.ToDouble(row.Cells[2].Value.ToString()); 
      DateTime newdate = finaldate.AddHours(hours); 

row.Cells[2].Value.ToString()讀取CSV

任何幫助值感激,謝謝

+0

Cell [2]的值是什麼? – Steve

+1

你是如何期望'0:29:40'被轉化爲雙倍的? –

+0

可能您應該嘗試將您的值轉換爲添加到TimeSpan,然後將其添加到DateTime實例? –

回答

2

你將需要使用TimeSpan.Parse()TimeSpan.ParseExact()方法來正確地解析你的字符串,然後簡單地認爲TimeSpan結果添加到您現有的日期:

var time = TimeSpan.Parse(row.Cells[2].Value.ToString()); 
DateTime newDate = finalDate.Add(time); 

如果您需要明確指定了每個你的時間值的代表,那麼TimeSpan.ParseExact()方法將允許您提供一個格式化字符串指定此:

// This will assume that 1:29:40 is hours, minutes, and seconds 
var time = TimeSpan.ParseExact(row.Cells[2].Value.ToString(), @"h\:m\:s", null); 
3

你並不需要解析的兩倍。解析爲TimeSpan。例如:

var source = "0:29:40"; 
var ts = TimeSpan.Parse(source); 

現在ts是你的時間跨度。並與TimeSpan的好處是,你可以把它添加到一個DateTime

DateTime newdate = finaldate + ts; 
相關問題