Чисто математическая задача

impul5e

Client
Регистрация
15.08.2017
Сообщения
198
Благодарностей
40
Баллы
28
Ребята, подскажите как правильно посчитать. Задача в том, что есть два времени, допустим 14:20 и 15:30 и мне нужно посчитать целое кол-во часов между этими цифрами, НО! засчитывать час нужно при пересечении значения в 10 минут (11:10, 12:10 и тп).
Например, если время 11:11 и 12:09 - это ноль часов,
а 12:09 и 12:11 - это 1 час.
Буду благодарен за помощь.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 167
Благодарностей
2 168
Баллы
113
1) сделать цикл с увеличением времени на 1 минуту между первой датой и второй.
2) Каждый результат внутри цикла сравнивать. Как только в теле цикла встретится дата с 10 минутами, ну типа "хх:10", то увеличивать отдельный счётчик №2 на единицу. (ну то есть парсить с получаемой даты в цикле только числовое значение "минут")
3) Потом в конце цикла значение "отдельного счетчика №2" и будет ваш финальный результат.
 
  • Спасибо
Реакции: impul5e

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
вычитаешь одно время из другого, получаешь тотальное значение из этой разницы в часах. больше ничего не надо. разнице времени вообще пофигу с нуля ты считаешь часы или с 10 минут.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 167
Благодарностей
2 168
Баллы
113
вычитаешь одно время из другого, получаешь тотальное значение из этой разницы в часах. больше ничего не надо. разнице времени вообще пофигу с нуля ты считаешь часы или с 10 минут.
нет, у него в ТЗ так сформировано что надо считать просто сколько раз стрелка минутная перешла через метку в 10 минут. Не отрезок, а именно метку на часах.
 
  • Спасибо
Реакции: impul5e

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 112
Благодарностей
196
Баллы
63
Ребята, подскажите как правильно посчитать. Задача в том, что есть два времени, допустим 14:20 и 15:30 и мне нужно посчитать целое кол-во часов между этими цифрами, НО! засчитывать час нужно при пересечении значения в 10 минут (11:10, 12:10 и тп).
Например, если время 11:11 и 12:09 - это ноль часов,
а 12:09 и 12:11 - это 1 час.
Буду благодарен за помощь.
Привет. Не оч силен с подсчетом времени, думаю примерно так:
C#:
// Вреенные метки
string time1 = "14:20";
string time2 = "15:30";

// Преобразование времени в формат DateTime
DateTime datetime1 = DateTime.ParseExact(time1, "HH:mm", CultureInfo.InvariantCulture);
DateTime datetime2 = DateTime.ParseExact(time2, "HH:mm", CultureInfo.InvariantCulture);

// Определение значений времени, которые нужно учитывать
int minutesToCount = 10;

// Вычисление разницы между временными метками в минутах
TimeSpan diff = datetime2 - datetime1;
double totalMinutes = diff.TotalMinutes;

// Подсчет количества часов с учетом условий задачи
double hours = Math.Floor(totalMinutes / 60);
for (DateTime i = datetime1; i < datetime2; i = i.AddMinutes(minutesToCount))
{
    if (i.Minute % minutesToCount == 0 && i.Minute != 0)
    {
        hours += 1;
    }
}

// Результат
project.SendInfoToLog(String.Format("Количество часов: {0}",hours),true);
 
  • Спасибо
Реакции: impul5e

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
нет, у него в ТЗ так сформировано что надо считать просто сколько раз стрелка минутная перешла через метку в 10 минут. Не отрезок, а именно метку на часах.
нет. читаем тз еще разок :bk: он хочет считать отрезок времени, а не сколько раз 10-ка прошла. иначе его 2 примера не валидны ;-)
хотя... может и да :D
 

impul5e

Client
Регистрация
15.08.2017
Сообщения
198
Благодарностей
40
Баллы
28
нет. читаем тз еще разок :bk: он хочет считать отрезок времени, а не сколько раз 10-ка прошла. иначе его 2 примера не валидны ;-)
хотя... может и да :D
Может не совсем понятно объяснил, но orka13 прав! Нужно подсчитать кол-во прохождений через 10 минутный барьер каждого часа)) Если вкратце.
 

impul5e

Client
Регистрация
15.08.2017
Сообщения
198
Благодарностей
40
Баллы
28
del
 

impul5e

Client
Регистрация
15.08.2017
Сообщения
198
Благодарностей
40
Баллы
28
Привет. Не оч силен с подсчетом времени, думаю примерно так:
C#:
// Вреенные метки
string time1 = "14:20";
string time2 = "15:30";

// Преобразование времени в формат DateTime
DateTime datetime1 = DateTime.ParseExact(time1, "HH:mm", CultureInfo.InvariantCulture);
DateTime datetime2 = DateTime.ParseExact(time2, "HH:mm", CultureInfo.InvariantCulture);

// Определение значений времени, которые нужно учитывать
int minutesToCount = 10;

// Вычисление разницы между временными метками в минутах
TimeSpan diff = datetime2 - datetime1;
double totalMinutes = diff.TotalMinutes;

// Подсчет количества часов с учетом условий задачи
double hours = Math.Floor(totalMinutes / 60);
for (DateTime i = datetime1; i < datetime2; i = i.AddMinutes(minutesToCount))
{
    if (i.Minute % minutesToCount == 0 && i.Minute != 0)
    {
        hours += 1;
    }
}

// Результат
project.SendInfoToLog(String.Format("Количество часов: {0}",hours),true);
Компиляция кода Ошибка в действии "CS0103" "The name 'CultureInfo' does not exist in the current context". [Строка: 6; Cтолбец: 58]
 

impul5e

Client
Регистрация
15.08.2017
Сообщения
198
Благодарностей
40
Баллы
28
Привет. Не оч силен с подсчетом времени, думаю примерно так:
C#:
// Вреенные метки
string time1 = "14:20";
string time2 = "15:30";

// Преобразование времени в формат DateTime
DateTime datetime1 = DateTime.ParseExact(time1, "HH:mm", CultureInfo.InvariantCulture);
DateTime datetime2 = DateTime.ParseExact(time2, "HH:mm", CultureInfo.InvariantCulture);

// Определение значений времени, которые нужно учитывать
int minutesToCount = 10;

// Вычисление разницы между временными метками в минутах
TimeSpan diff = datetime2 - datetime1;
double totalMinutes = diff.TotalMinutes;

// Подсчет количества часов с учетом условий задачи
double hours = Math.Floor(totalMinutes / 60);
for (DateTime i = datetime1; i < datetime2; i = i.AddMinutes(minutesToCount))
{
    if (i.Minute % minutesToCount == 0 && i.Minute != 0)
    {
        hours += 1;
    }
}

// Результат
project.SendInfoToLog(String.Format("Количество часов: {0}",hours),true);
Подправил, вот так работает:
C#:
string Time_old = project.Variables["timenow2"].Value;
DateTime datetime1 = DateTime.ParseExact(Time_old, "MM/dd/yyyy HH:mm:ss", null);
string Time_new = project.Variables["date_now"].Value;
DateTime datetime2 = DateTime.ParseExact(Time_new, "MM/dd/yyyy HH:mm:ss", null);

// Определение значений времени, которые нужно учитывать
int minutesToCount = 10;

// Вычисление разницы между временными метками в минутах
TimeSpan diff = datetime2 - datetime1;
double totalMinutes = diff.TotalMinutes;

// Подсчет количества часов с учетом условий задачи
double hours = Math.Floor(totalMinutes / 60);
for (DateTime i = datetime1; i < datetime2; i = i.AddMinutes(minutesToCount))
{
    if (i.Minute % minutesToCount == 0 && i.Minute != 0)
    {
        hours += 1;
    }
}

// Результат
project.SendInfoToLog(String.Format("Количество часов: {0}",hours),true);
 
  • Спасибо
Реакции: artsmm

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)