DateTime.now или DateTime.UTC, пожалуйста, сообщите

#c# #.net #windows

#c# #.net #Windows

Вопрос:

Привет, я разрабатываю приложение Windows form (C #), которое будет использоваться в различных географических точках и требует 2 параметра: время работы от часа и время работы от часа. Это выглядит как

 business from hr: 08:00
business to hr: 17:00 
  

Мне нужно выполнить проверку по этим двум временам, чтобы проверить, соответствует ли текущее местное время рабочим часам или нет. Чтобы получить локальный текущий час, на какое время я должен ссылаться? Это DateTime.Now или Datetime.UtcNow ? Пожалуйста, сообщите.

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

1. Как следует из названия, DateTime. UTC — это время UTC, а не местное время (за исключением того, что местное время на самом деле является UTC).

2. Это должно зависеть, т. Е. Будет ли то же хранилище использоваться кем-то в другом часовом поясе? если это так, вы должны использовать время UTC, но также сохранить часовой пояс, чтобы помочь другому пользователю часового пояса точно использовать данные посредством преобразований, в противном случае вы можете использовать localtime

3. Вам нужно выполнить проверку диапазона рабочих часов на стороне сервера (базы данных) или на стороне клиента (т. Е. в самом приложении Windows form)?

4. На самом деле все зависит, во многих местах, где я работал, существует общее соглашение о часовом поясе (UTC), но тогда вам нужно поработать с разницей во времени. Если вы всегда хотите локальный, тогда используйте DateTime.Now. Я чувствую, что этот вопрос откроет банку с червями, на которые нелегко ответить.

5. Рекомендуется хранить Datetime в UTC вместе с часовым поясом, особенно в веб-приложениях, поскольку UTC является объективным, а localtime — субъективным.

Ответ №1:

В приложении WinForms местное время является DateTime.Now .

Смотрите ссылку на MSDN.