• Модуль: crmmobile
  • Путь к файлу: ~/bitrix/modules/crmmobile/lib/Command/SaveEntityCommand.php
  • Класс: BitrixCrmMobileCommandSaveEntityCommand
  • Вызов: SaveEntityCommand::prepareDatetimeField
private function prepareDatetimeField(Field $field, &$data): void
{
	$isDateTimeField = $field->getType() === Field::TYPE_DATETIME;
	$timezoneOffset = CTimeZone::getOffset();
	$useTimezone = ($field->getUserField()['SETTINGS']['USE_TIMEZONE'] ?? 'Y') === 'Y';

	$createFromTimestamp = static function ($timestamp) use ($isDateTimeField, $timezoneOffset, $useTimezone) {
		$object = $isDateTimeField
			? DateTime::createFromTimestamp($timestamp)
			: Date::createFromTimestamp($timestamp + $timezoneOffset);

		if ($isDateTimeField && !$useTimezone)
		{
			$object = $object->toUserTime();
		}

		return $object;
	};

	if ($field->isMultiple())
	{
		if (!empty($data) && is_array($data))
		{
			foreach ($data as $key => $value)
			{
				if (!empty($value))
				{
					$data[$key] = $createFromTimestamp($value);
				}
				else
				{
					unset($data[$key]);
				}
			}
		}
	}
	else
	{
		$data = $createFromTimestamp($data);
	}
}