/yashr/drivers/datetime.php

https://bitbucket.org/inginer/yashr1_1 · PHP · 281 lines · 233 code · 15 blank · 33 comment · 15 complexity · 0b7b17c16a91edaadab6ab5e27c31700 MD5 · raw file

  1. <?php
  2. /**
  3. * Created by JetBrains PhpStorm.
  4. * User: Руслан
  5. * Date: 11.05.13
  6. * Time: 2:46
  7. * To change this template use File | Settings | File Templates.
  8. */
  9. namespace Yashr\Drivers;
  10. use Yashr\Classes\Driver;
  11. /**
  12. * Class Datetime
  13. * @package Yashr\Drivers
  14. */
  15. class Datetime extends Driver
  16. {
  17. /**
  18. * @param array $params
  19. */
  20. public function exec(array $params = array())
  21. {
  22. }
  23. /**
  24. * @var array
  25. */
  26. public static $month = array(
  27. 'января',
  28. 'февраля',
  29. 'марта',
  30. 'апреля',
  31. 'мая',
  32. 'июня',
  33. 'июля',
  34. 'августа',
  35. 'сентября',
  36. 'октября',
  37. 'ноября',
  38. 'декабря'
  39. );
  40. /**
  41. * @var array
  42. */
  43. public static $short_month = array(
  44. 'янв',
  45. 'фев',
  46. 'мар',
  47. 'апр',
  48. 'май',
  49. 'июн',
  50. 'июл',
  51. 'авг',
  52. 'сен',
  53. 'окт',
  54. 'ноя',
  55. 'дек'
  56. );
  57. /**
  58. * @param array $data
  59. * @return bool|string
  60. */
  61. public function current (array $data = array())
  62. {
  63. $default = array(
  64. 'type' => 'dt'
  65. );
  66. $data = array_merge($default,$data);
  67. switch ($data['type'])
  68. {
  69. case "dt":
  70. default:
  71. {
  72. $date = date('Y:m:d H:i:s');
  73. break;
  74. }
  75. case "time":
  76. {
  77. $date = date('H:i:s');
  78. break;
  79. }
  80. case "date":
  81. {
  82. $date = date('Y:m:d');
  83. break;
  84. }
  85. }
  86. return $date;
  87. }
  88. /**
  89. * @param array $data
  90. * @return string
  91. */
  92. public function format (array $data = array())
  93. {
  94. $default = array(
  95. 'human' => 1,
  96. 'date' => '',
  97. 'type' => ''
  98. );
  99. $data = array_merge($default, $data);
  100. $date = $data['date'];
  101. $end='';
  102. if (!is_numeric($date))
  103. {
  104. $date=strtotime($date);
  105. }
  106. if (!$data['human'])
  107. {
  108. if (date('y', $date)==date('y'))
  109. {
  110. $end.=date('d', $date).' '.self::$month[date('n', $date)-1];
  111. }
  112. else
  113. {
  114. $end.=date('d', $date).' '.self::$month[date('n', $date)-1].' '.date('Y', $date);
  115. }
  116. $end.=' в '.date('H:i', $date);
  117. return $end;
  118. }
  119. switch ($data['type'])
  120. {
  121. case 'time':
  122. {
  123. $end.=date('H:i', $date);
  124. break;
  125. }
  126. case 'number':
  127. {
  128. if (date('y', $date)==date('y'))
  129. {
  130. $end.=date('d', $date).' '.self::$month[date('n', $date)-1];
  131. }
  132. else
  133. {
  134. $end.=date('d', $date).' '.self::$month[date('n', $date)-1].' '.date('Y', $date);
  135. }
  136. break;
  137. }
  138. case 'date':
  139. {
  140. if (date('dmy', $date)==date('dmy'))
  141. {
  142. $end.='';
  143. }
  144. elseif (date('y', $date)==date('y'))
  145. {
  146. $end.=date('d', $date).' '.self::$month[date('n', $date)-1];
  147. }
  148. else
  149. {
  150. $end.=date('d', $date).' '.self::$month[date('n', $date)-1].' '.date('Y', $date);
  151. }
  152. break;
  153. }
  154. case 'fulldate':
  155. {
  156. $end.=date('d', $date).' '.self::$month[date('n', $date)-1].' '.date('Y', $date);
  157. break;
  158. }
  159. case 'shortdate':
  160. {
  161. if (date('dmy', $date)==date('dmy'))
  162. {
  163. $end.=date('H:i', $date);
  164. }
  165. else
  166. {
  167. if (!empty($data['time']))
  168. {
  169. $end.=date('d.m H:i', $date);
  170. }
  171. else
  172. {
  173. $end.=date('d', $date).' '.self::$short_month[date('n', $date)-1];
  174. }
  175. }
  176. break;
  177. }
  178. case 'docdate':
  179. {
  180. if (date('dmy', $date) == date('dmy'))
  181. {
  182. $end .= date('H:i', $date);
  183. }
  184. else
  185. {
  186. $end .= date('d', $date).'.'.date('m', $date);
  187. $end .= ' '.date('H:i', $date);
  188. }
  189. break;
  190. }
  191. case 'all':
  192. {
  193. if (date('dmy', $date)==date('dmy'))
  194. {
  195. $end.= date('H:i', $date);
  196. }
  197. elseif (date('dmy', $date)==date('dmy', mktime(0, 0, 0, date('m'), date('d')+1, date('y'))))
  198. {
  199. $end.=self::t('завтра');
  200. }
  201. elseif (date('dmy', $date)==date('dmy', mktime(0, 0, 0, date('m'), date('d')-1, date('y'))))
  202. {
  203. $end.=self::t('вчера');
  204. }
  205. elseif (date('dmy', $date)==date('dmy', mktime(0, 0, 0, date('m'), date('d')+2, date('y'))))
  206. {
  207. $end.=self::t('послезавтра');
  208. }
  209. else
  210. {
  211. if (date('y', $date)==date('y'))
  212. {
  213. $end.=date('d', $date).' '.self::$month[date('n', $date)-1];
  214. }
  215. else
  216. {
  217. $end.=date('d', $date).' '.self::$month[date('n', $date)-1].' '.date('Y', $date);
  218. }
  219. }
  220. break;
  221. }
  222. default:
  223. {
  224. if (date('dmy', $date)==date('dmy'))
  225. {
  226. $end.=self::t('сегодня');
  227. }
  228. elseif (date('dmy', $date)==date('dmy', mktime(0, 0, 0, date('m'), date('d')+1, date('y'))))
  229. {
  230. $end.=self::t('завтра');
  231. }
  232. elseif (date('dmy', $date)==date('dmy', mktime(0, 0, 0, date('m'), date('d')-1, date('y'))))
  233. {
  234. $end.=self::t('вчера');
  235. }
  236. elseif (date('dmy', $date)==date('dmy', mktime(0, 0, 0, date('m'), date('d')+2, date('y'))))
  237. {
  238. $end.=self::t('послезавтра');
  239. }
  240. else
  241. {
  242. if (date('y', $date)==date('y'))
  243. {
  244. $end.=date('d', $date).' '.self::$month[date('n', $date)-1];
  245. }
  246. else
  247. {
  248. $end.=date('d', $date).' '.self::$month[date('n', $date)-1].' '.date('Y', $date);
  249. }
  250. }
  251. $end.=' в '.date('H:i', $date);
  252. break;
  253. }
  254. }
  255. return $end;
  256. }
  257. /**
  258. * @param $str
  259. * @param array $values
  260. * @return mixed
  261. */
  262. public static function t ($str, $values=array())
  263. {
  264. return $str;
  265. }
  266. }