Получите часовой пояс от DateTime

Обратите внимание, что хотя оптимизатор может быть способен обрезать статически известные тесты и недостижимые ветви из сгенерированного кода, компилятор все еще должен иметь возможность компилировать каждый

То есть:

int foo() {
  #if 0
    return std::cout << "this isn't going to work\n";
  #else
    return 1;
  #endif
}

будет работать нормально, потому что препроцессор удаляет мертвую ветвь до того, как компилятор увидит ее, но:

int foo() {
  if (std::is_integral<double>::value) {
    return std::cout << "this isn't going to work\n";
  } else {
    return 1;
  }
}

не будет. Несмотря на то, что оптимизатор может отбросить первую ветвь, она все равно не скомпилируется. Здесь используется справка enable_if и SFINAE, потому что вы можете выбрать допустимый (компилируемый) код, а неверный (несовместимый) код «Сбой компиляции не является ошибкой».

96
задан dbkk 23 February 2009 в 06:53
поделиться

4 ответа

Сам DateTime не содержит реальной информации о часовом поясе. Это может знать, является ли это UTC или локальный, но не, что локальный действительно означает.

DateTimeOffset несколько лучше - это - в основном время UTC и смещение. Однако этого все еще не действительно достаточно для определения часового пояса, поскольку много различных часовых поясов могут иметь то же смещение в любом моменте времени. Это кажется, что может быть достаточно хорошо для Вас, хотя, как все Вы взялись за работу с тем, когда парсинг даты/времени является смещением.

Поддержка часовых поясов с.NET 3.5 намного лучше, чем это было, но я действительно хотел бы видеть стандарт "ZonedDateTime" или что-то как этот - время UTC и фактический часовой пояс. Легко создать Ваше собственное, но было бы хорошо видеть его в стандартных библиотеках.

Править: Почти четыре года спустя я теперь предложил бы использовать Время Noda, которое имеет скорее более богатый набор типов даты/времени. Я смещаюсь хотя как основной автор Времени Noda :)

131
ответ дан Sergii Illiukhin 24 November 2019 в 05:27
поделиться

Нет.

разработчик А ответственен за отслеживание информацию о часовом поясе, связанную со значением DateTime с помощью некоторого внешнего механизма.

А заключают в кавычки из превосходной статьи здесь . Необходимость чтение для каждого разработчика .NET.

, Таким образом, мой совет состоит в том, чтобы записать немного класса обертки, который удовлетворяет Вашим потребностям.

34
ответ дан Gerrie Schenck 5 November 2019 в 12:46
поделиться

Существует библиотека TimeZone общественного достояния для.NET . Действительно полезный. Это ответит на Ваши потребности.

Решение проблемы часового пояса общего случая более трудно, чем Вы думаете.

5
ответ дан Cheeso 5 November 2019 в 12:46
поделиться

От API ( http://msdn.microsoft.com/en-us/library/system.datetime_members (По сравнению с 71) .aspx) не кажется, что он может показать название используемого часового пояса.

1
ответ дан tehvan 5 November 2019 в 12:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: