Сколько раз происходит промежуток времени между двумя датами - PullRequest
1 голос
/ 10 октября 2011

---- EDIT ----

О, извини, это была огромная ошибка :) 1003 *

Позвольте мне снова задать вопрос ...

Вот пример,

Datetime startTime = 2011-10-08 12:30:00
Datetime endTime = 2011-10-10 15:00:00

Сколько раз 12:00:00 - 13:00:00 происходит между двумя датами?

2011-10-08 12:30:00 - 2011-10-08 13:00:00 Not Ok (time has alredy started)
2011-10-09 12:00:00 - 2011-10-09 13:00:00 Ok
2011-10-10 12:00:00 - 2011-10-10 13:00:00 Ok

Ожидаемый результат 2.

Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 10 октября 2011
(endTime-startTime).Ticks/timeSpan.Ticks
1 голос
/ 11 октября 2011

После просмотра вашего обновления вы захотите сделать что-то вроде определения дней проверки и проверки границ, чтобы узнать, попадают ли конкретные даты в даты начала и окончания. В качестве примера, вот пример кода, который я бросил вместе.

    private static void CheckTimes()
    {
        DateTime start = DateTime.Parse("2011-10-08 12:30:00");
        DateTime end = DateTime.Parse("2011-10-10 15:00:00");
        // variable to use for bound checking (Date property sets the hour to 00)
        DateTime boundscheck = start.Date;
        // variable containing results
        int timesFound = 0;

        // This loop assumes we are only looking for one match per day
        for (int i = 0; i <= (end - start).Days; i++)
        {
            // set the lower bound to yyyy-mm-dd 12:00:00
            var lowerbound = boundscheck.Date.AddHours(12);
            // set the upper bound to yyyy-mm-dd 13:00:00
            var upperbound = lowerbound.AddHours(1);
            //determine if bounds are within our start and end date
            if (lowerbound >= start && upperbound <= end)
            {
                timesFound++;
            }
            // increment boundscheck variable by one day
            boundscheck = boundscheck.AddDays(1);
        }
    }

Надеюсь, это поможет.

1 голос
/ 10 октября 2011

Возьмите разницу двух дней, деленную на интервал.

TimeSpan timeSpan = new TimeSpan(24, 00, 00); // one day

DateTime start = new DateTime(2011, 10, 08, 11, 00, 00);
DateTime end = new DateTime(2011, 10, 10, 23, 00, 00); // 2 and 1/2 days later

var occurances = ((end - start).Ticks / (float)timeSpan.Ticks); // 2.5f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...