web-dev-qa-db-ja.com

時間を23:59:59に設定

可能性のある複製:
DateTimeで最新の時刻を指定するにはどうすればよいですか

日付範囲を比較する必要がありますが、日付が上位比較日であるにもかかわらず、時刻が午前0時よりも長い行がありません。上位比較の時間を23:59:59に設定する方法はありますか?

30
Mike Wills

これは可能な解決策です:

yourDateTime.Date.AddHours(23).AddMinutes(59).AddSeconds(59);
50
Webleeuw

関心のある最後の比較(-===-)の後にafterの真夜中に上位比較を行い、それを排他的比較で使用しませんか?

DateTime upperExclusive = lastInclusive.Date.AddDays(1);
if (dateInclusive >= date && date < upperExclusive)
{
    ....
}

これは、1日の最後の秒を見つけるよりもクリーンな解決策のように感じられます。他のことを除けば、現在のスキームでは23:59:59.500などの値がまだ不足しています。

必須のプラグイン:私はBCLの日付/時刻APIの大ファンではありません。 Noda Time -.NETへの Joda Time のポートのタブを保持したい場合があります。

37
Jon Skeet

もしあなたが比較をしているなら、なぜあなたは翌日よりも少ないものと比較しないのですか?

例えば。 Linqクエリの場合:

someList.Where(x => (currentDaysDate <= x.ItemDate ) && (x.ItemDate < nextDaysDate))
4
Kelsey

EndOfDay拡張メソッドを作成する

 public static DateTime EndOfDay (this DateTime d)
    {
        return DateTime.Parse(d.ToShortDateString().Trim() + " 23:59:59");
    }
4
Bill Martin

上の比較より1日遅れて使用し、<ではなく上側に<=を使用します。このようにして、指定した時間よりもさらに遅い時間(1秒未満)を取得できます。

または、直接DateTimeの代わりにDateTime.Dateプロパティを使用して比較します。これにより、時間部分が「取り除かれ」、検索の日付が自動的に午前0時として扱われます。

1
Reed Copsey

はい、このDateTimeコンストラクタ- http://msdn.Microsoft.com/en-us/library/272ba130.aspx では、日付、時間、分、秒を指定できます。

0
logicnp

時間にまったく不安がない場合は、DateDateTimeプロパティを使用して、日付部分のみを返すことができます(時間は00:00:0000に設定されています)。

if(MyDate.Date >= StartDate.Date && MyDate.Date <= EndDate.Date)
{
    //Code here
}
0
adharris