2016-09-15 10 views
-3

既存の時間にさらに時間を追加しようとしています。これは、DateTime.Now.AddHours(48)関数で追加すると動作します...これは、現在の時刻に48時間を追加します。C#の既存の時間に時間を追加するにはどうすればよいですか?

しかし、私が解決できないことは、過去から未来までの時間を追加することです。

たとえば、「CheckInTime」の下のコードでは、私は既存の時間(現在の時間ではなく)に48時間を追加しようとしています。 「CheckInTime」は2014年9月14日9時16分00秒となり、その時間に48時間を追加する必要があります。これはC#コードです。

DateTime? FutureTime; 
DateTime? CheckInTime; 

if (duration.Contains("48")) // duration is a time blocks (12 or 24 or 48)hrs 
{ 
    // add 48 hrs from current time 
    FutureTime= DateTime.Now.AddHours(48); 

    // should add 48 hrs to the pre-existing time(past or future.) 
    CheckInTime= GameSchedule.CheckInTime.AddHours(48); 
    } 
    else if (...) // Other code... 
    .... 

私がやりたいこと:既存の時間(将来または過去)に時間を追加します。

EG: - Nullable type - ないDateTime

CheckInTime= GameSchedule.CheckInTime.AddHours(48); 
//where CheckinTime has past of future time. I want to add 48 hours. 
+3

あなたが持っている実際の問題とは何ですか:あなたはロスリン以上を使用している場合


は、あなたはまた、代わりにifチェックの?.演算子を使用することができますか? –

+0

DateTime oldTime = DateTime.Parse( "9/14/2016 9:16:00 PM"); DateTime newTime = oldTime.AddHours(48); – jdweng

+0

@YuvalItzchakov質問をよくお読みください。それを簡単にするために、過去から未来までの時間を追加することはできません。 – asax

答えて

3

CheckInTimeDateTime?です。

if (CheckInTime != null) 
{ 
    CheckInTime = CheckInTime.Value.AddHours(48); 
} 
else 
{ 
    // Do whatever you want to do when CheckInTime has not been set yet. 
} 

注:このように、あなたはそのValue最初を抽出するために必要なすべての暗黙的な変換があるので、あなたは直接、(DateTime?です)CheckInTimeに(DateTimeです)AddHoursの結果を割り当てることができます通常型からヌル可能型への変換

// Yields null if CheckInTime is null; otherwise, yields the result of the method 
// invocation. 
CheckInTime = CheckInTime?.AddHours(48); 
+0

'GameSchedule.CheckInTime'はヌル入力可能ですか?彼は既存の値を突然変異させようとしているので、それはヌル可能です。 –

+1

@YuvalItzchakov:質問に与えられた小さな情報では言い表せません。私はVTCを持っていて、答える代わりにdownvotedする必要があることを知っていますが、時には私は教育的な推測をする気分です。 – Heinzi

+0

完全に公正な、我々はすべてこれらの気分:) –

関連する問題