Работа со временем
Цитата: Никита от 24.08.2021, 18:47Всем приветы!)
Сделал программу, которая запускает нужный мне софт в определённое время и закрывает так же в нужное для меня время.
Но бывает так, что нужный софт в процессе работы вылетает, а до его закрытия было ещё несколько часов..
И пока не наступит вновь то время, в которое он должен запуститься не выполняется нужная мне работа.Подскажите пожалуйста, как просчитать, что время закрытия в формате (hh:mm) ещё не наступило и чтобы софт после вылета, снова запускался..
Вот в этом коде указано, если текущее время не соответствует времени закрытия и отсутствует нужное окно программы, то нужно запустить ту самую программу, но в таком случае и после времени закрытия программа будет запускаться..
[spoiler title="Код"]if (!closeTime.Equals(currentTime.Text)) { IntPtr target_hwnd = FindWindowByCaption(IntPtr.Zero, procName); if (target_hwnd == IntPtr.Zero) { Process process = Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = "/c " + procLine, UseShellExecute = false, CreateNoWindow = true, }); output.Text += $"Запускаю \"{procName}\".\r\nЗакрытие в {closeTime}\r\n\r\n********************************************"; output.Text += "\r\n"; } else { // Nothing to Do } }
[/spoiler]
Всем приветы!)
Сделал программу, которая запускает нужный мне софт в определённое время и закрывает так же в нужное для меня время.
Но бывает так, что нужный софт в процессе работы вылетает, а до его закрытия было ещё несколько часов..
И пока не наступит вновь то время, в которое он должен запуститься не выполняется нужная мне работа.
Подскажите пожалуйста, как просчитать, что время закрытия в формате (hh:mm) ещё не наступило и чтобы софт после вылета, снова запускался..
Вот в этом коде указано, если текущее время не соответствует времени закрытия и отсутствует нужное окно программы, то нужно запустить ту самую программу, но в таком случае и после времени закрытия программа будет запускаться..
if (!closeTime.Equals(currentTime.Text))
{
IntPtr target_hwnd = FindWindowByCaption(IntPtr.Zero, procName);
if (target_hwnd == IntPtr.Zero)
{
Process process = Process.Start(new ProcessStartInfo
{
FileName = "cmd",
Arguments = "/c " + procLine,
UseShellExecute = false,
CreateNoWindow = true,
});
output.Text += $"Запускаю \"{procName}\".\r\nЗакрытие в {closeTime}\r\n\r\n********************************************";
output.Text += "\r\n";
}
else
{
// Nothing to Do
}
}
Цитата: Adler от 24.08.2021, 19:10Приветствую.
Если не ошибаюсь, то с DateTime работают стандартные логические операторы вроде >, <, >=, <= и т.д.
Сравнивай DateTime.Now (т.е. сейчас) с тем конечным временем.
Приветствую.
Если не ошибаюсь, то с DateTime работают стандартные логические операторы вроде >, <, >=, <= и т.д.
Сравнивай DateTime.Now (т.е. сейчас) с тем конечным временем.
Цитата: Никита от 24.08.2021, 20:12Цитата: Adler от 24.08.2021, 19:10Приветствую.
Если не ошибаюсь, то с DateTime работают стандартные логические операторы вроде >, <, >=, <= и т.д.
Сравнивай DateTime.Now (т.е. сейчас) с тем конечным временем.Дело в том, что время закрытия у меня указано в текст.файле.
И соответственно невозможно применить DateTime к string...
Можно ли, как-то записать в переменную DateTime определённое время, а не текущее?
Цитата: Adler от 24.08.2021, 19:10Приветствую.
Если не ошибаюсь, то с DateTime работают стандартные логические операторы вроде >, <, >=, <= и т.д.
Сравнивай DateTime.Now (т.е. сейчас) с тем конечным временем.
Дело в том, что время закрытия у меня указано в текст.файле.
И соответственно невозможно применить DateTime к string...
Можно ли, как-то записать в переменную DateTime определённое время, а не текущее?
Цитата: Adler от 24.08.2021, 20:17Ну так в текстовом файле можно писать стрингом время в формате легко конвертируемом в DateTime и работать далее уже с ним. В Google полно примеров.
Ну так в текстовом файле можно писать стрингом время в формате легко конвертируемом в DateTime и работать далее уже с ним. В Google полно примеров.
Цитата: Никита от 31.08.2021, 16:17Цитата: Adler от 24.08.2021, 20:17Ну так в текстовом файле можно писать стрингом время в формате легко конвертируемом в DateTime и работать далее уже с ним. В Google полно примеров.
Сделал так:
var openDT = DateTime.Today.AddHours(Convert.ToUInt32(openTime.Remove(2))).AddMinutes(Convert.ToUInt32(openTime.Remove(0, 3)));В итоге получил сегодняшнюю дату с заменой часов и минут с текстового поля "openTime"
Цитата: Adler от 24.08.2021, 20:17Ну так в текстовом файле можно писать стрингом время в формате легко конвертируемом в DateTime и работать далее уже с ним. В Google полно примеров.
Сделал так:
var openDT = DateTime.Today.AddHours(Convert.ToUInt32(openTime.Remove(2))).AddMinutes(Convert.ToUInt32(openTime.Remove(0, 3)));
В итоге получил сегодняшнюю дату с заменой часов и минут с текстового поля "openTime"