У меня есть небольшая проблема при обработке DateTime
на C#. Я разработал приложение Windows, которое взаимодействует с системой автоматизации Harris. Приложение получает все триггеры для программ EPG. Теперь у меня есть этот вопрос:Как сменная рукоятка DateTime
триггер получил
DateTime
: 2012-01-31 23:58:23спускового точное время:
00:03:53
(это значение может быть либо> сейчас() или < сейчас()
Вот код, который обрабатывает это:
DateTime segmentStartDateTime = DateTime.Now.ToUniversalTime().Date;
segmentStartDateTime = segmentStartDateTime + item.TIME;
Если мы протестируем этот код с вышеописанным случаем, я получаю segmentStartDateTime = 2012-01-31 00:03:53
, что является неправильным значением (правое значение должно быть 2012-02-01 00:03:53
).
Уверен, что кто-то из вас столкнулся с этой проблемой раньше, и я буду признателен за любую помощь в ее устранении (чтобы определить, находится ли время в текущий день или на следующий день).
еще несколько примеров:
1)
Вход: - Текущее время: 2012-03-08 13:27:00
- Received TimeSpan в виде строки: 13:28:30
Выход - Программа начнется в: 2012-03-08 13:28:30
2)
Вход: - Текущее время: 2012-03-08 23:58:19
- Received TimeSpan в виде строки: 00:02:15
Выход - Программа начнется в: 2012-03-09 00:02:15
(день после)
3)
Вход: - Текущее время: 2012-03-08 23:58:19
- Получено TimeSpan в виде строки: 23:57:43
Выход - программа начнется в: Теперь уже пора (2012-03-08 23:57:43
)
Используйте 'DateTime.UtcNow' вместо' DateTime.Now.ToUniversalTime() '. Это быстрее и не имеет проблем при переходе с/на летнее время. – CodesInChaos
Является ли проблема, что вы надеялись получить время 1 февраля, а не 31 января? –
проблема в том, что я могу получить триггер до его реального начала datetime – user852194