0

私のユニットテストに基づいて、0400時間の次のインスタンスがいつになるかを計算し、これを返します。

public void when_given_a_date_i_should_return_next_time_of_day_that_equals_04_hrs()
{
    var dateTimeNow = new DateTime(2012, 6, 11, 14, 22, 0);
    var dateTimeExpected = new DateTime(2012, 6, 12, 4, 0, 0);

    Assert.AreEqual(dateTimeExpected, t.CalculateIncremental(dateTimeNow));
}

CalculateIncrementalのポイントは、RequestUtcTimeoutを使用して、午前04:00に24時間ごとにnservicebusでメッセージを公開することです。これもいくつかの機能をトリガーします。

4

3 に答える 3

3

このようなもの:

private static DateTime GetNext4AM(DateTime input)
{
    var result = new DateTime(input.Year, input.Month, input.Day, 4, 0, 0);

    if (result > input)
    {
        return result;
    }
    else
    {
        return result.AddDays(1);   
    }
}

午前4時の次のオカレンスを返す必要があります。これは、同じ日(入力が04:00より前の場合)または次の日になります。でも:

ポイント[..]は、RequestUtcTimeoutを使用して、午前04:00に24時間ごとにnservicebusでメッセージを公開することです。これもいくつかの機能をトリガーします。

そのためには、 Quartz.NETや単にWindowsタスクスケジューラなどのスケジューラを使用する必要があります。

于 2012-06-11T13:40:24.747 に答える
0

の時間を確認しdateTimeNowます。4未満の場合は、日付と午前4時を時間として返します。4以上の場合は、翌日の日付を返し、午前4時を時間として返します。4:00:00で何をしたいかを決めます-今日か次の日か。

于 2012-06-11T13:39:29.050 に答える
0
var now = new DateTime();
var dateTimeExpected = new DateTime(now.GetFullYear(), 
    now.GetMonth(), now.GetDay(), 4, 0, 0);
if (dateTimeExpected.CompareTo(now) > 0)
    dateTimeExpected = dateTimeExpected.AddDays(1);
于 2012-06-11T13:40:31.370 に答える