Сколько раз временной интервал возникает между двумя датами

#c# #asp.net-mvc #asp.net-mvc-3 #datetime

#c# #asp.net-mvc #asp.net-mvc-3 #дата-время

Вопрос:

—-РЕДАКТИРОВАТЬ—-

О, мне жаль, что это была огромная ошибка 🙂

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

Вот пример,

 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.

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

Комментарии:

1. Почему вы ожидаете, что это будет три? Временной интервал представляет собой промежуток времени. Ваш пример представляет 13 часов, 0 минут и 0 секунд. Не могли бы вы предоставить более подробную информацию о том, чего вы хотите достичь?

2. Вы пытаетесь определить, сколько 13-часовых периодов происходит за время между вашим начальным и конечным временем, или вы пытаетесь определить, сколько времени 13:00 (1pm) происходит между заданными начальными / конечными временами?

Ответ №1:

 (endTime-startTime).Ticks/timeSpan.Ticks
  

Ответ №2:

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

     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 amp;amp; upperbound <= end)
            {
                timesFound  ;
            }
            // increment boundscheck variable by one day
            boundscheck = boundscheck.AddDays(1);
        }
    }
  

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

Комментарии:

1. Большое спасибо! Именно то, что я искал! Отличная работа!

Ответ №3:

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

 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