You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
3.5 KiB

  1. <?php
  2. /**
  3. * Format
  4. *
  5. * @copyright
  6. * @link
  7. * @package Majestic
  8. * @subpackage Core
  9. * @since 24.12.2008
  10. * @version SVN: $Id$
  11. * @filesource $URL$
  12. */
  13. /**
  14. * Отвечает за конвертацию данных между читаемым
  15. * человеком и машиной форматами.
  16. *
  17. */
  18. class Format
  19. {
  20. /* Date & time */
  21. static protected $time_format = 'H:i:s';
  22. static protected $date_format = 'd.m.Y';
  23. static protected $date_time_format = 'd.m.Y H:i';
  24. static protected $timezone_offset = 0;
  25. static protected $cache_time = array();
  26. /* money */
  27. static protected $decimal_point = ',';
  28. static protected $currency_symbol = ' руб.';
  29. static protected $frac_digits = 2;
  30. static protected $cache_money = array();
  31. static public function int2money($int = 0, $currency = false)
  32. {
  33. if(!isset(self::$cache_money[$int])){
  34. self::$cache_money[$int] = number_format($int/100, self::$frac_digits, self::$decimal_point, '');
  35. }
  36. return self::$cache_money[$int] . (($currency) ? self::$currency_symbol : '');
  37. }
  38. static public function money2int($money)
  39. {
  40. if(!isset(self::$cache_money[$money])){
  41. self::$cache_money[$money] = (int)str_replace(array('.', self::$decimal_point), '', $money);
  42. }
  43. return self::$cache_money[$money];
  44. }
  45. /**
  46. * Возвращает время в часах из секунд.
  47. *
  48. * @param int $timestamp
  49. * @return string
  50. */
  51. static public function int2time($timestamp = 0)
  52. {
  53. if(!isset(self::$cache_time[$timestamp])){
  54. self::$cache_time[$timestamp] = date(self::$time_format, $timestamp-self::$timezone_offset);
  55. }
  56. return self::$cache_time[$timestamp];
  57. }
  58. /**
  59. * Возвращает дату и время из таймстампа.
  60. *
  61. * @param int $timestamp
  62. * @param bool $hours
  63. * @return string
  64. */
  65. static public function int2date($timestamp = 0, $hours = true)
  66. {
  67. if(!isset(self::$cache_time[$timestamp])){
  68. self::$cache_time[$timestamp] = date(($hours) ? self::$date_time_format : self::$date_format , $timestamp);
  69. }
  70. return self::$cache_time[$timestamp];
  71. }
  72. /**
  73. * Установка смещения для getTime
  74. *
  75. * @param int $offset
  76. */
  77. static public function setTimezoneOffset($offset)
  78. {
  79. self::$timezone_offset = $offset;
  80. }
  81. /**
  82. * Преобразует время в секунды.
  83. *
  84. * @param string $time
  85. * @return int
  86. */
  87. static public function time2int($time)
  88. {
  89. if(!isset(self::$cache_time[$time])){
  90. $elements = explode(':', $time);
  91. if(count($elements) == 3){
  92. list($h, $m, $s) = $elements;
  93. self::$cache_time[$time] = ($h * 60 * 60) + ($m * 60) + $s;
  94. } else {
  95. self::$cache_time[$time] = (int)$time;
  96. }
  97. }
  98. return self::$cache_time[$time];
  99. }
  100. /**
  101. * Преобразует дату в таймстамп.
  102. *
  103. * @param mixed $time
  104. * @return TimeFormat
  105. */
  106. static public function date2int($time)
  107. {
  108. if(!isset(self::$cache_time[$time])){
  109. self::$cache_time[$time] = strtotime($time);
  110. }
  111. return self::$cache_time[$time];
  112. }
  113. }
  114. Format::setTimezoneOffset(date('Z'));
  115. ?>