Узнать соклько осталось до окончания текущих суток.

one

Client
Регистрация
22.09.2015
Сообщения
6 831
Благодарностей
1 273
Баллы
113
Подскажите решения, как, имея дату и время текущего дня получить сколько осталось времени до окончания дня.
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 816
Баллы
113
Перевести время в секунды (только вермя, дату не трогаем). Потом 86400 (кол-во секунд в сутках) минус полученное на предыдущем шаге кол-во секунд. Узнаем сколько секунд осталось до конца дня. При необходимости можно будет конвертировать в часы и минуты.
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 831
Благодарностей
1 273
Баллы
113

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 816
Баллы
113
Можно пример кода?
C#:
string input_date = "14:11:58, понедельник 28, май 2018";

// Оставляем только время, отсекая дату и день недели.
string time_str = input_date.Split(',')[0].Trim();

// Переводим время в секунды.
int seconds = (int)TimeSpan.Parse(time_str).TotalSeconds;

// Сколько секунд осталось до конца дня.
int diff = 86400 - seconds;

// Возвращем кол-во оставшихся до конца дня секунд.
return diff;
Если входящая строка отличная от той, что в примере, то потребуется немного изменить код.

В итоге тут возвращается количество секунд оставшихся до конца текущих суток.
 
  • Спасибо
Реакции: inilim и one

one

Client
Регистрация
22.09.2015
Сообщения
6 831
Благодарностей
1 273
Баллы
113

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 816
Баллы
113
Вот, поправил код:
C#:
string input_date = "28.05.2018 14:11:58";

// Оставляем только время, отсекая дату и день недели.
string time_str = input_date.Trim().Split(' ')[1].Trim();

// Переводим время в секунды.
int seconds = (int)TimeSpan.Parse(time_str).TotalSeconds;

// Сколько секунд осталось до конца дня.
int diff = 86400 - seconds;

// Возвращем кол-во оставшихся до конца дня секунд.
return diff;
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 387
Благодарностей
5 447
Баллы
113
Вот, поправил код:
C#:
string input_date = "28.05.2018 14:11:58";

// Оставляем только время, отсекая дату и день недели.
string time_str = input_date.Trim().Split(' ')[1].Trim();

// Переводим время в минуты.
int seconds = (int)TimeSpan.Parse(time_str).TotalSeconds;

// Сколько секунд осталось до конца дня.
int diff = 86400 - seconds;

// Возвращаем кол-во оставшихся до конца дня минут
return diff;
Благодарю за код. Подправил под себя. Считает минуты и дату берет не с переменной, а по факту.

C#:
string dt = DateTime.Now.ToString();
// Оставляем только время, отсекая дату и день недели.
string time_str = dt.Trim().Split(' ')[1].Trim();

// Переводим время в секунды.
int Minutes = (int)TimeSpan.Parse(time_str).TotalMinutes;

// Сколько секунд осталось до конца дня.
int diff = 1440 - Minutes;

return diff;
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
533
Благодарностей
1 111
Баллы
93
Благодарю за код. Подправил под себя. Считает минуты и дату берет не с переменной, а по факту.

C#:
string dt = DateTime.Now.ToString();
// Оставляем только время, отсекая дату и день недели.
string time_str = dt.Trim().Split(' ')[1].Trim();

// Переводим время в секунды.
int Minutes = (int)TimeSpan.Parse(time_str).TotalMinutes;

// Сколько секунд осталось до конца дня.
int diff = 1440 - Minutes;

return diff;
C#:
return (int)(DateTime.Today.AddDays(1) - DateTime.Now).TotalMinutes;
 
  • Спасибо
Реакции: one, Sho и Mikhail B.

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