Add namespace.
This commit is contained in:
229
Env/Format.class.php
Normal file
229
Env/Format.class.php
Normal file
@ -0,0 +1,229 @@
|
||||
<?php
|
||||
/**
|
||||
* Format
|
||||
*
|
||||
* @copyright NetMonsters <team@netmonsters.ru>
|
||||
* @link
|
||||
* @package Majestic
|
||||
* @subpackage Core
|
||||
* @since 24.12.2008
|
||||
*/
|
||||
|
||||
/**
|
||||
* Отвечает за конвертацию данных между читаемым
|
||||
* человеком и машиной форматами.
|
||||
*
|
||||
*/
|
||||
class Format
|
||||
{
|
||||
/* Date & time */
|
||||
static protected $time_format = 'H:i:s';
|
||||
static protected $date_format = 'd.m.Y';
|
||||
static protected $today_format = 'd.m.Y'; //disabled by default
|
||||
static protected $date_time_format = 'H:i d.m.Y';
|
||||
static protected $today_time_format = 'H:i d.m.Y'; //disabled by default
|
||||
static protected $timezone_offset = 0;
|
||||
|
||||
/* money */
|
||||
static protected $decimal_point = ',';
|
||||
static protected $currency_symbol = 'руб.';
|
||||
static protected $frac_digits = 2;
|
||||
|
||||
static public function getCurrency()
|
||||
{
|
||||
return self::$currency_symbol;
|
||||
}
|
||||
|
||||
public static function setCurrencySymbol($symbol)
|
||||
{
|
||||
self::$currency_symbol = $symbol;
|
||||
}
|
||||
|
||||
/**
|
||||
* Форматируем int в денежный формат
|
||||
*
|
||||
* @param mixed $int
|
||||
* @param bool $currency - показывать валюту
|
||||
* @param bool $show_decimals - показывать или нет дробную часть
|
||||
* @return string
|
||||
*/
|
||||
static public function int2money($int = 0, $currency = false, $show_decimals = true)
|
||||
{
|
||||
$money = number_format($int/100, ($show_decimals) ? self::$frac_digits : 0, self::$decimal_point, ' ');
|
||||
if ($currency) {
|
||||
return str_replace(' ', html_entity_decode(' ', ENT_COMPAT, 'UTF-8'), $money) . ' ' . self::$currency_symbol;
|
||||
} else {
|
||||
return $money;
|
||||
}
|
||||
}
|
||||
|
||||
static public function money2int($money)
|
||||
{
|
||||
$money = str_replace(' ', '', $money);
|
||||
if(!strstr($money, self::$decimal_point) && !strstr($money, '.')){
|
||||
$int = (int)$money * 100;
|
||||
}else{
|
||||
$int = (int)str_replace(array('.', self::$decimal_point), '', $money);
|
||||
}
|
||||
return $int;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает время в часах из секунд.
|
||||
*
|
||||
* @param int $timestamp
|
||||
* @return string
|
||||
*/
|
||||
static public function int2time($timestamp = 0)
|
||||
{
|
||||
$hours = floor($timestamp / 3600);
|
||||
$minutes = floor(($timestamp / 60) - ($hours * 60));
|
||||
$seconds = $timestamp - ($hours * 3600) - ($minutes * 60);
|
||||
|
||||
return ($hours < 10 ? ('0' . $hours) : $hours)
|
||||
. ':' . ($minutes < 10 ? ('0' . $minutes) : $minutes)
|
||||
. ':' . ($seconds < 10 ? ('0' . $seconds) : $seconds);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату и время из таймстампа.
|
||||
*
|
||||
* @param int $timestamp
|
||||
* @param bool $hours
|
||||
* @return string
|
||||
*/
|
||||
static public function int2date($timestamp = 0, $hours = true)
|
||||
{
|
||||
if (date('Ymd') == date('Ymd', $timestamp)) {
|
||||
return date(($hours) ? self::$today_time_format : self::$today_format , $timestamp);
|
||||
}
|
||||
|
||||
return date(($hours) ? self::$date_time_format : self::$date_format , $timestamp);
|
||||
}
|
||||
|
||||
static public function int2rusDate($timestamp = 0, $hours = false)
|
||||
{
|
||||
$month = array('января', 'февраля', 'марта',
|
||||
'апреля', 'мая', 'июня',
|
||||
'июля', 'августа', 'сентября',
|
||||
'октября', 'ноября', 'декабря');
|
||||
$date = ($hours) ? date('H:i d', $timestamp) . ' ' . $month[date('m', $timestamp) - 1] . ' ' .date('Y', $timestamp) : date('d', $timestamp) . ' ' . $month[date('m', $timestamp) - 1] . ' ' .date('Y', $timestamp);
|
||||
return $date;
|
||||
}
|
||||
|
||||
/**
|
||||
* Установка смещения для getTime
|
||||
*
|
||||
* @param int $offset
|
||||
*/
|
||||
static public function setTimezoneOffset($offset)
|
||||
{
|
||||
self::$timezone_offset = $offset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Установка форматов даты
|
||||
*
|
||||
*/
|
||||
static public function setDateFormat($date_time_format, $date_format = false)
|
||||
{
|
||||
self::$date_time_format = $date_time_format;
|
||||
if ($date_format) {
|
||||
self::$date_format = $date_format;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Установка форматов даты для текущего дня
|
||||
*
|
||||
*/
|
||||
static public function setTodayFormat($today_time_format, $today_format = false)
|
||||
{
|
||||
self::$today_time_format = $today_time_format;
|
||||
if ($today_format) {
|
||||
self::$today_format = $today_format;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Преобразует время в секунды.
|
||||
*
|
||||
* @param string $time
|
||||
* @return int
|
||||
*/
|
||||
static public function time2int($time)
|
||||
{
|
||||
$elements = explode(':', $time);
|
||||
if(count($elements) == 3){
|
||||
list($h, $m, $s) = $elements;
|
||||
$int = ($h * 60 * 60) + ($m * 60) + $s;
|
||||
} else {
|
||||
$int = (int)$time;
|
||||
}
|
||||
return $int;
|
||||
}
|
||||
|
||||
/**
|
||||
* Преобразует дату в таймстамп.
|
||||
*
|
||||
* @param mixed $time
|
||||
* @return int|bool
|
||||
*/
|
||||
static public function date2int($time)
|
||||
{
|
||||
return strtotime($time);
|
||||
}
|
||||
|
||||
static public function int2phone($intphone)
|
||||
{
|
||||
$intphone = (string) $intphone;
|
||||
|
||||
if (strlen($intphone) == 10) {
|
||||
return '(' . substr($intphone, 0, 3) . ') ' . substr($intphone, 3, 3) . '-' . substr($intphone, 6, 2) . '-' . substr($intphone, 8, 2);
|
||||
} elseif (strlen($intphone) == 7) {
|
||||
return substr($intphone, 0, 3) . '-' . substr($intphone, 3, 2) . '-' . substr($intphone, 5, 2);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
static public function phone2int($phone)
|
||||
{
|
||||
$phone = str_replace(array(' ', '-', '(', ')'), '', $phone);
|
||||
$phone_length = strlen($phone);
|
||||
if (is_numeric($phone) && ($phone_length == 7 || $phone_length == 10)) { //бывают семизначные прямые номера
|
||||
if ($phone_length == 7) {
|
||||
$phone = '495' . $phone;
|
||||
}
|
||||
return $phone;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Байты в мегабайты
|
||||
* @param int $bytes
|
||||
* @return string
|
||||
*/
|
||||
public static function bytes2MB($bytes)
|
||||
{
|
||||
$mb = number_format((int) $bytes / 1024 / 1024, 2, '.', '');
|
||||
return preg_replace("/(\.?)0+$/", "", $mb) . 'МБ';
|
||||
}
|
||||
|
||||
/**
|
||||
* Байты в килобайты
|
||||
* @param int $bytes
|
||||
* @return string
|
||||
*/
|
||||
public static function bytes2KB($bytes)
|
||||
{
|
||||
$kb = number_format((int) $bytes / 1024, 2, '.', '');
|
||||
return preg_replace("/(\.?)0+$/", "", $kb) . 'КБ';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Оффсет с учетом летнего/зимнего времени
|
||||
*/
|
||||
Format::setTimezoneOffset(date('Z') - ((date('I') ? 60*60 : 0 )));
|
Reference in New Issue
Block a user