При работе с датами и временем следует учитывать часовые пояса:

  • устройства на котором установлен Радиант (ОС);
  • БД;
  • настройки пользователя.

При входе (Action=Login) в Радиант пользователю присваивается значение для поля UserTimeZone исходя из следующих правил:

  • если часовой пояс указан пользователем в личных настройках (Action=AgentPreferences), то он и используется в качестве ЧП для текущего взаимодействия с Радиант;
  • в противном случае используется значение по умолчанию, заданное в настройках Радиант для поля UserDefaultTimeZone;
  • в случае отсутствия оного используется UTC.

Соответственно всякий раз, когда потребуется преобразовать дату и время к часовому поясу пользователя, нужно использовать значение UserTimeZone, которое можно узнать при вызове Kernel::System::User::GetUserData.

Возможности Kernel::System::DateTime для работы со временем и датами

Основные вызовы для работы со временем и датами расположены в Kernel::System::DateTime.

Создать

  • new
  • Set
  • Clone

Получить

  • Get
  • RadiantTimeZoneGet
  • UserDefaultTimeZoneGet
  • SystemTimeZoneGet
  • LastDayOfMonthGet
  • TimeZoneList
  • TimeZoneByOffsetList

Изменить

  • Add
  • Subtract

Преобразовать

  • Format
  • ToTimeZone
  • ToRadiantTimeZone
  • ToEpoch
  • ToString
  • ToEmailTimeStamp
  • ToСTimeString

Проверить

  • Validate
  • IsVacationDay
  • IsTimeZoneValid

Сравнить

  • Delta
  • Compare