/** * @param FieldType $fieldType Document field type. * @param mixed $value Field value. * @param string $toTypeClass Type class name. * @return null|mixed */ public static function convertTo(FieldType $fieldType, $value, $toTypeClass) { /** @var Base $toTypeClass */ $type = $toTypeClass::getType(); switch ($type) { case FieldType::BOOL: $value = (bool) $value ? 'Y' : 'N'; break; case FieldType::DATE: $value = date(Main\Type\Date::convertFormatToPhp(\FORMAT_DATE), (int) $value); break; case FieldType::DATETIME: $value = date(Main\Type\DateTime::convertFormatToPhp(\FORMAT_DATETIME), (int) $value); break; case FieldType::DOUBLE: $value = (double) $value; break; case FieldType::INT: $value = (int) $value; break; case FieldType::STRING: case FieldType::TEXT: $value = (string) $value; break; case FieldType::USER: $value = 'user_' . (int) $value; break; default: $value = null; } return $value; }
/** * @param FieldType $fieldType Document field type. * @param mixed $value Field value. * @param string $toTypeClass Type class name. * @return null|mixed */ public static function convertTo(FieldType $fieldType, $value, $toTypeClass) { /** @var Base $toTypeClass */ $type = $toTypeClass::getType(); switch ($type) { case FieldType::DOUBLE: case FieldType::INT: $value = $value ? (int) strtotime($value) : 0; break; case FieldType::DATE: case FieldType::DATETIME: case FieldType::STRING: case FieldType::TEXT: $value = (string) $value; if ($value) { if ($type == FieldType::DATE) { $format = \FORMAT_DATE; } elseif ($type == FieldType::DATETIME) { $format = \FORMAT_DATETIME; } else { $format = static::getType() == FieldType::DATE ? \FORMAT_DATE : \FORMAT_DATETIME; } if (\CheckDateTime($value, $format)) { $value = date(Type\Date::convertFormatToPhp($format), \MakeTimeStamp($value, $format)); } else { $value = date(Type\Date::convertFormatToPhp($format), strtotime($value)); } } break; default: $value = null; } return $value; }
/** * @param FieldType $fieldType Document field type. * @param mixed $value Field value. * @param string $toTypeClass Type class name. * @return null|mixed */ public static function convertTo(FieldType $fieldType, $value, $toTypeClass) { /** @var Base $toTypeClass */ $type = $toTypeClass::getType(); switch ($type) { case FieldType::BOOL: $value = strtolower((string) $value); $value = in_array($value, array('y', 'yes', 'true', '1')) ? 'Y' : 'N'; break; case FieldType::DATE: $value = date(Main\Type\Date::convertFormatToPhp(\FORMAT_DATE), strtotime($value)); break; case FieldType::DATETIME: $value = date(Main\Type\DateTime::convertFormatToPhp(\FORMAT_DATETIME), strtotime($value)); break; case FieldType::DOUBLE: $value = str_replace(' ', '', str_replace(',', '.', $value)); $value = (double) $value; break; case FieldType::INT: $value = str_replace(' ', '', $value); $value = (int) $value; break; case FieldType::STRING: case FieldType::TEXT: $value = (string) $value; break; case FieldType::USER: $value = trim($value); if (strpos($value, 'user_') === false && strpos($value, 'group_') === false && !preg_match('#^[0-9]+$#', $value)) { $value = null; } break; default: $value = null; } return $value; }
public static function parseDateString($str) { if ($str === '') { return null; } try { $date = new Date($str, Date::convertFormatToPhp(FORMAT_DATE)); } catch (Main\ObjectException $e) { try { $date = new DateTime($str, Date::convertFormatToPhp(FORMAT_DATETIME)); $date->setTime(0, 0, 0); } catch (Main\ObjectException $e) { return null; } } return $date; }
/** * <p>Преобразует дату из одного заданного формата в другой заданный формат. В формате допустимы следующие обозначения:</p> <p> </p> <table width="100%" class="tnormal"> <tr> <th width="40%">Обозначение</th> <th width="60%">Описание</th> </tr> <tr> <td>YYYY</td> <td>Год (0001 - 9999)</td> </tr> <tr> <td>MM</td> <td>Месяц (01 - 12)</td> </tr> <tr> <td>DD</td> <td>День (01 - 31)</td> </tr> <tr> <td>HH</td> <td>Часы (00 - 24)</td> </tr> <tr> <td>MI</td> <td>Минуты (00 - 59)</td> </tr> <tr> <td>SS</td> <td>Секунды (00 - 59)</td> </tr> </table> <p>Динамичный метод.</p> * * * @param string $date Год (0001 - 9999)</b * * @param string $format = "DD.MM.YYYY Месяц (01 - 12)</bo * * @param H $H День (01 - 31)</b * * @param M $I Часы (00 - 24)</bo * * @param S $S Минуты (00 - 59)</b * * @param $string Секунды (00 - 59)</bod * * @param new_forma $t = "DD.MM.YYYY * * @param H $H Дата для конвертации. * * @param M $I Текущий формат даты. <br>Необязательный. По умолчанию - "DD.MM.YYYY HH:MI:SS". * * @param S $S В какой формат необходимо преобразовать. <br>Необязательный. По * умолчанию - "DD.MM.YYYY HH:MI:SS". * * @return string * * <h4>Example</h4> * <pre> * <? * // зададим дату * $date = "31.12.2007"; * * // укажем формат этой даты * $format = "DD.MM.YYYY"; * * // получим формат текущего сайта * $new_format = CSite::GetDateFormat("SHORT"); // YYYY-MM-DD * * // переведем дату из одного формата в другой * $new_date = $DB-><b>FormatDate</b>($date, $format, $new_format); * * // в результате получим дату в новом формате * echo $new_date; // 2007-12-31 * ?> * * * <? * // конвертация даты из формата одного сайта в формат другого * * // получим формат сайта ru * $format_ru = CSite::GetDateFormat("SHORT", "ru"); // DD.MM.YYYY * * // получим формат сайта en * $format_en = CSite::GetDateFormat("SHORT", "en"); // YYYY-MM-DD * * // переведем дату из формата сайта ru в формат сайта en * $new_date = $DB-><b>FormatDate</b>($date, $format_ru, $format_en); * * // в результате получим дату в новом формате * echo $date; // 2007-12-31 * ?> * </pre> * * * <h4>See Also</h4> * <ul> <li> <a * href="http://dev.1c-bitrix.ru/api_help/main/reference/cdatabase/dateformattophp.php">CDatabase::DateFormatToPHP</a> * </li> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/csite/getdateformat.php">CSite::GetDateFormat</a> * </li> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/functions/date/convertdatetime.php">ConvertDateTime</a> </li> * <li> <a href="http://dev.1c-bitrix.ru/api_help/main/functions/date/index.php">Функции для работы с * датой и временем</a> </li> </ul> <a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/cdatabase/formatdate.php * @author Bitrix */ public static function FormatDate($strDate, $format = "DD.MM.YYYY HH:MI:SS", $new_format = "DD.MM.YYYY HH:MI:SS") { if (empty($strDate)) { return false; } if ($format === false && defined("FORMAT_DATETIME")) { $format = FORMAT_DATETIME; } $fromPhpFormat = Main\Type\Date::convertFormatToPhp($format); $time = false; try { $time = new Main\Type\DateTime($strDate, $fromPhpFormat); } catch (Main\ObjectException $e) { } if ($time !== false) { //Compatibility issue $fixed_format = preg_replace(array("/(?<!Y)Y(?!Y)/i", "/(?<!M)M(?!M|I)/i", "/(?<!D)D(?!D)/i", "/(?<!H)H:I:S/i"), array("YYYY", "MM", "DD", "HH:MI:SS"), strtoupper($new_format)); $toPhpFormat = Main\Type\Date::convertFormatToPhp($fixed_format); return $time->format($toPhpFormat); } return false; }
public function createInvoices(array $params) { $count = isset($params['COUNT']) ? (int) $params['COUNT'] : 0; if ($count <= 0) { return; } $sum = isset($params['SUM']) ? (int) $params['SUM'] : 0; if ($sum <= 0) { return; } $dealID = isset($params['DEAL_ID']) ? (int) $params['DEAL_ID'] : 0; $companyID = isset($params['COMPANY_ID']) ? (int) $params['COMPANY_ID'] : 0; $contactID = isset($params['CONTACT_ID']) ? (int) $params['CONTACT_ID'] : 0; $userIDs = isset($params['USER_IDS']) && is_array($params['USER_IDS']) ? $params['USER_IDS'] : array(); if (empty($userIDs)) { $userIDs[] = \CCrmSecurityHelper::GetCurrentUserID(); } $prefix = isset($params['PREFIX']) ? $params['PREFIX'] : ''; if ($prefix === '') { $prefix = $this->id; } $date = isset($params['DATE']) ? $params['DATE'] : null; if (!$date) { $date = $date = new Date(); } $maxDateOffset = isset($params['MAX_DATE_OFFSET']) ? (int) $params['MAX_DATE_OFFSET'] : 0; $dateFormat = Date::convertFormatToPhp(FORMAT_DATE); $dateTimeFormat = Date::convertFormatToPhp(FORMAT_DATETIME); $isWon = isset($params['IS_WON']) ? $params['IS_WON'] : false; if ($isWon) { $totalSum = $sum; } else { $totalSum = $sum - mt_rand((int) ($sum / 3), $sum); } $entity = new \CCrmInvoice(false); $invoiceSum = (int) $totalSum / $count; $totalInvoiceSum = 0; for ($i = 1; $i <= $count; $i++) { if ($i == $count) { $invoiceSum = $totalSum - $totalInvoiceSum; } $totalInvoiceSum += $invoiceSum; $time = DateTime::createFromTimestamp($date->getTimestamp()); if ($maxDateOffset > 0) { $time->add(mt_rand(0, $maxDateOffset) . ' days'); } $time->setTime(mt_rand(8, 20), mt_rand(0, 59), 0); $siteTime = $time->format($dateTimeFormat); $siteDate = $time->format($dateFormat); \CCrmOwnerType::GetCaption(\CCrmOwnerType::Company, $companyID, false); $companyInfo = self::getCompanyInfo($companyID); $contactInfo = self::getContactInfo($contactID); $fields = array('ORDER_TOPIC' => "{$prefix} invoice # {$i}", 'STATUS_ID' => $isWon ? 'P' : 'N', 'DATE_INSERT' => $siteTime, 'DATE_BILL' => $siteDate, 'RESPONSIBLE_ID' => self::getRandomItem($userIDs), 'UF_DEAL_ID' => $dealID, 'UF_COMPANY_ID' => $companyID, 'UF_CONTACT_ID' => $contactID, 'PERSON_TYPE_ID' => 1, 'PAY_SYSTEM_ID' => 1, 'INVOICE_PROPERTIES' => array(10 => $companyInfo['TITLE'], 11 => $companyInfo['FULL_ADDRESS'], 12 => $contactInfo['FULL_NAME'], 13 => $contactInfo['EMAIL'], 14 => $contactInfo['PHONE']), 'PRODUCT_ROWS' => array(array('ID' => 0, 'PRODUCT_NAME' => "{$prefix} product", 'QUANTITY' => 1, 'PRICE' => $invoiceSum, 'PRODUCT_ID' => 0, 'CUSTOMIZED' => 'Y'))); $ID = $entity->Add($fields); } }
function DateFormatToPHP($format) { static $cache = array(); if (!isset($cache[$format])) { $cache[$format] = Main\Type\Date::convertFormatToPhp($format); } return $cache[$format]; }