2011-01-14 8 views

答えて

9

私はすっきり/賢い方法があると確信しているが、それは仕事を得るでしょう。

+0

ありがとうdownvoter。 – fearofawhackplanet

+0

これは唯一の正しいものです –

+0

パブロは彼を削除しました。 – Mike

1

現在の時刻が午前2時より前の場合は、次の午前2時は今日、次の午前2時は明日(日+1)になります。

おそらくdatetimeオブジェクトを使用して1日増分する必要があります。これは、常に正しい日付になるようにする必要があります。 C#の

DateTime dt = DateTime.Today.AddHours(2); 
if (dt < DateTime.Now) 
    dt = dt.AddDays(1); 

+0

どのようにして.netで日付オブジェクトを使用しますか? –

+0

DateTime.AddDays –

1
private DateTime GetTwoAm() 
    { 
     DateTime time1 = DateTime.Now; 
     DateTime time2 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 2, 0, 0); 

     if (time1 <= time2) 
     { 
      return time2; 
     } 
     else 
     { 
      return time2.AddDays(1); 
     } 
    } 
0
DateTime dt = DateTime.Now; 
if (dt.Hour >= 2) 
    dt = dt.Date.Add(new TimeSpan(1, 2, 0, 0)); 
else 
    dt = dt.Date.Add(new TimeSpan(2, 0, 0)); 
1

日付を扱うときはいつでもあなたはケースを欠場するための機能に組み込まれて使用します。それは2時後だ場合

DateTime today2am = DateTime.Now.Date.AddHours(2); 
DateTime Nexttwoam = (DateTime.Now < today2am) ? (today2am) : today2am.AddDays(1); 
+0

today2amは今日の午前2時ではなく、現在時間+2時間を含んでいます。 –

+0

@Herp DateTime.Now.Dateは日付だけを返し、時刻は00:00にデフォルト設定されているためです – w69rdy

1

そうでない場合は追加し、今日に一日を追加します。0日:

DateTime.Today.AddDays(DateTime.Now.Hour >= 2 ? 1 : 0) 
0

と思う真夜中に時間を追加したり、時間も任意の大きなタイムスパンを加える含む任意の答えおそらく、夏時間のためにいつかは失敗することになります。

Dim dtToCheck As DateTime = "3/13/2011 00:12" 

    Dim tz As TimeZone = System.TimeZone.CurrentTimeZone 

    Dim dl As System.Globalization.DaylightTime = tz.GetDaylightChanges(dtToCheck.Year) 



    Dim dt As DateTime = Format(dtToCheck, "yyyy-MM-dd HH:00:00.000") 

    If dt < dtToCheck Then dt = dt.AddHours(1) 

    Do Until dt.Hour = 2 
     If dt < dl.Start And dt.AddHours(1) >= dl.Start Then 
      'will go over 
      dt = dt.Add(dl.Delta) 
     End If 
     dt = dt.AddHours(1) 
    Loop 

    TextBox2.Text = dt 

3月13日の真夜中の次の2:AMは少なくとも私のタイムゾーンでは3月14日です。

関連する問題