2017-06-12 58 views
0

我想將5分鐘添加到指定時間,這裏是我的代碼。將分鐘添加到當前指定的時間

string startTime = "1:00 AM"; 
string endTime = "0:05 AM"; 

TimeSpan duration = DateTime.Parse(endTime).Add(DateTime.Parse(startTime)); 

我不斷收到錯誤,我怎麼能有5分鐘到凌晨1點成爲1:05 AM?

+0

將錯誤消息添加到問題 –

回答

1

你傳入整個DateTime對象,而你需要解析endTime字符串後僅傳遞Minute屬性,然後使用AddMinutes方法startTime解析DateTime對象本上:

DateTime updateTime = DateTime.Parse(startTime).AddMinutes(DateTime.Parse(endTime).Minute); 

它將返回DateTime對象增加5分鐘到原始DateTime對象,即1:00 AM並且reuslt將是1:05 AM

看到工作DEMO Fiddle here

+1

不,不 - 這是一個壞主意。此代碼可以工作,直到持續時間更改爲1-59之間的整數分鐘數。如果持續時間變爲30秒或一整小時?然後這段代碼會在開始時間加上0分鐘。 – Kevin

0

Add方法有一個重載獲取TimeSpan。如下使用它:

DateTime dt = DateTime.UtcNow; // this should be your value actually 
DateTime newTime = dt.Add(TimeSpan.FromMinutes(5); 

System.DateTime.Add method documentation on MSDN

+0

AddMinutes方法是更好的選擇(由@Ehsan答覆) – Artak

2

您不能添加的時候,你只能添加一個跨度。但是,您可以通過TimeOfDay屬性來獲取日期時間的跨度:

string startTime = "1:00 AM"; 
string endTime = "0:05 AM"; 

DateTime duration = DateTime.Parse(startTime).Add(DateTime.Parse(endTime).TimeOfDay); 

然而,直接使用時間跨度是更值得推薦的(你要刪除AM,因爲它是一個跨度,而不是一個DateTime):

string startTime = "1:00 AM"; 
string endTime = "0:05"; 

DateTime duration = DateTime.Parse(startTime).Add(TimeSpan.Parse(endTime)); 

如果你知道你將永遠不會添加的東西比別的分鐘,我會做這樣的事情:

string startTime = "1:00 AM"; 
int minutes = 5; 

DateTime duration = DateTime.Parse(startTime).AddMinutes(minutes); 

你可以瞭解更多關於DateTime here

+2

+1。偏移,從概念上思考程序。你*不*有開始時間和結束時間。你有一個開始時間和*持續時間*。你真正想要的是'startTime'作爲一個字符串,'durationInMinutes'作爲一個整數。 – Kevin

相關問題