Требование простое: PHP >= 5.2.0 (но лучше >=5.3)
Методы:
- Возвращает дату в формате [12 декабря 2014 года]
Возвращает разницу дат
Прибавляет интервал к дате
Отнимает интервал от дате
Преобразует дату в нужный формат
Возвращает выпадающий список дней месяца
Возвращает выпадающий список месяцев
Возвращает выпадающий список годов
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- /**
- * Класс для работы с Датой и Временем
- * @package LibDateTime
- * @version 1.1
- * @author Gold Dragon <illusive@bk.ru>
- * @link http://gd.lotos-cms.ru
- * @copyright Авторские права (C) 2000-2015, Gold Dragon
- * @date 01.01.2015
- * @see http://wiki.lotos-cms.ru/index.php/LibDateTime
- * @license MIT License: http://opensource.org/licenses/MIT
- */
- class LibDateTime
- {
- /** @var array : название месяцев (именительный падеж) */
- "---------",
- "Январь",
- "Февраль",
- "Март",
- "Апрель",
- "Май",
- "Июнь",
- "Июль",
- "Август",
- "Сентябрь",
- "Октябрь",
- "Ноябрь",
- "Декабрь");
- /** @var array : название месяцев (родительный падеж) */
- "---------",
- "января",
- "февраля",
- "марта",
- "апреля",
- "мая",
- "июня",
- "июля",
- "августа",
- "сентября",
- "октября",
- "ноября",
- "декабря");
- /** @var array : суффикс для года */
- /**
- * Возвращает дату в формате [12 декабря 2014 года]
- *
- * @param datetime|null $date : дата в любом форматие
- * @param int $suffix : выводить ли слово после даты
- * 0 - нет (по умолчанию)
- * 1 - короткая форма
- * 2 - длинная форма
- *
- * @return string : дата
- *
- * @example:
- * echo LibDateTime::getDateName('01.01.2015');
- * echo LibDateTime::getDateName('01.01.2015', 2);
- */
- public static function getDateName($date = null, $suffix = 0)
- {
- }
- if ($suffix < 0 or $suffix > 2) {
- $suffix = 0;
- }
- $result[] = self::formatDate($date, 'd');
- $result[] = self::$MONTH_NAME_R[self::formatDate($date, 'n')];
- $result[] = self::formatDate($date, 'Y');
- $result[] = self::$SUFFIX[$suffix];
- }
- /**
- * Возвращает разницу дат
- *
- * @param datetime $date1 : уменьшаемое
- * @param datetime|null $date2 : вычитаемое (если не задана то текущая)
- * @param string $format : возвращаемый формат (каждому символу должен предшествовать знак процента [%])
- * Y : Годы, число, минимум две цифры с ведущими нулями
- * y : Годы, число
- * M : Месяцы, число, минимум две цифры с ведущими нулями
- * m : Месяцы, число
- * D : Дни, число, минимум две цифры с ведущими нулями
- * d : Дни, число
- * a : Общее количество дней в качестве результата выполнения DateTime::diff(), либо unknown
- * H : Часы, число, минимум две цифры с ведущими нулями
- * h : Часы, число
- * I : Минуты, число, минимум две цифры с ведущими нулями
- * i : Минуты, число
- * S : Секунды, число, минимум две цифры с ведущими нулями
- * s : Секунды, число
- * R : Знак "-" при отрицательном числе, "+" при положительном
- * r : Знак "-" при отрицательном числе, пусто при положительном
- *
- * @return int : разность (в днях)
- *
- * @example:
- * echo LibDateTime::getDateDiff('01.01.2015');
- * echo LibDateTime::getDateDiff('11.11.2020', '01.01.2015');
- * echo LibDateTime::getDateDiff('11.11.2020', '01.01.2015', '%r%a');
- *
- * @since 21.08.2015 Gold Dragon
- */
- public static function getDateDiff($date1, $date2 = null, $format = '%r%a')
- {
- }
- $d2 = new DateTime($date1);
- $d1 = new DateTime($date2);
- $result = (int)$d1->diff($d2)->format($format);
- return $result;
- }
- /**
- * Прибавляет интервал к дате
- *
- * @param string $date - дата
- * @param string $interval - интервал в формате ISO 8601, например, P5D (5 дней) или P3Y (3 года)
- * Y - Количество лет
- * M - Количество месяцев
- * D - Количество дней
- * @param string $format - возвращаемый формат (по умолчанию d.m.Y)
- *
- * @return string - дата в формате $format
- *
- * @example:
- * echo LibDateTime::getDateAdd('01.01.2015', 'P5D');
- * echo LibDateTime::getDateAdd('01.01.2015', 'P5D', 'Y-m-d');
- */
- public static function getDateAdd($date, $interval, $format = 'd.m.Y')
- {
- $d1 = new DateTime($date);
- $result = $d1->add(new DateInterval($interval))->format($format);
- return $result;
- }
- /**
- * Отнимает интервал от дате
- *
- * @param string $date - дата
- * @param string $interval - интервал в формате ISO 8601, например, P5D (5 дней) или P3Y (3 года)
- * Y - Количество лет
- * M - Количество месяцев
- * D - Количество дней
- * @param string $format - возвращаемый формат (по умолчанию d.m.Y)
- *
- * @return string - дата в формате $format
- *
- * @example:
- * echo LibDateTime::getDateSub('01.01.2015', 'P5D');
- * echo LibDateTime::getDateSub('01.01.2015', 'P5D', 'Y-m-d');
- */
- public static function getDateSub($date, $interval, $format = 'd.m.Y')
- {
- $d1 = new DateTime($date);
- $result = $d1->sub(new DateInterval($interval))->format($format);
- return $result;
- }
- /**
- * Преобразует дату в нужный формат
- *
- * @param string $date - дата (если не задана то текущая)
- * @param string $format - возвращаемый формат (по умолчанию d.m.Y)
- *
- * @return string
- *
- * @example:
- * echo LibDateTime::formatDate();
- * echo LibDateTime::formatDate('', 'Y-m-d');
- * echo LibDateTime::formatDate('01.01.2015', 'Y-m-d');
- */
- public static function formatDate($date = null, $format = 'd.m.Y')
- {
- }
- $date_obj = new DateTime($date);
- return $date_obj->format($format);
- }
- /**
- * Возвращает выпадающий список дней месяца
- *
- * @param int $month : номер месяца
- * @param int $year : год
- * @param string $tag_name : имя тега
- * @param null|int $selected : значение для выбора
- * @param string $tag_attribs : дополнительные атрибуты тега
- * @param int $calendar : Календарь, используемый для вычисления
- * 0 or CAL_GREGORIAN - Грегорианский календарь (по умолчанию)
- * 1 or CAL_JULIAN - Юлианский календарь
- * 2 or CAL_JEWISH - Еврейский календарь
- * 3 or CAL_FRENCH - Календарь со дня Французской революции
- *
- * @return string : HTML-код
- *
- * @example:
- * echo LibDateTime::selectDays(2, 2015, 'qqq');
- * echo LibDateTime::selectDays(2, 2015, 'qqq', 12);
- * echo LibDateTime::selectDays(2, 2015, 'qqq', '', ' id="qq1" style="color:#900"');
- */
- public static function selectDays($month, $year, $tag_name, $selected = null, $tag_attribs = '', $calendar = CAL_GREGORIAN)
- {
- $result = '';
- $result .= '<select name="' . $tag_name . ' ' . $tag_attribs . '">';
- for ($i = 1; $i <= $_day; $i++) {
- $extra = ($i == $selected) ? ' selected="selected"' : '';
- $result .= '<option value="' . $i . '" ' . $extra . '>' . $i . '</option>';
- }
- $result .= '</select>';
- return $result;
- }
- /**
- * Возвращает выпадающий список месяцев
- *
- * @param string $tag_name : имя тега
- * @param null|int $selected : значение для выбора
- * @param string $tag_attribs : дополнительные атрибуты тега
- * @param bool $padez : падеж
- * true : именительны (по умолчанию)
- * false : родительный
- *
- * @return string : HTML-код
- *
- * @example:
- * echo LibDateTime::selectMonth('qqq');
- * echo LibDateTime::selectMonth('qqq', 5);
- * echo LibDateTime::selectMonth('qqq', '', ' id="qq1" style="color:#900"', false);
- */
- public static function selectMonth($tag_name, $selected = null, $tag_attribs = '', $padez = true)
- {
- $result = '';
- $month = ($padez) ? self::$MONTH_NAME_I : self::$MONTH_NAME_R;
- $result .= '<select name="' . $tag_name . ' ' . $tag_attribs . '">';
- for ($i = 1; $i < 13; $i++) {
- $extra = ($i == $selected) ? ' selected="selected"' : '';
- $result .= '<option value="' . $i . '" ' . $extra . '>' . $month[$i] . '</option>';
- }
- $result .= '</select>';
- return $result;
- }
- /**
- * Возвращает выпадающий список годов
- *
- * @param int $year1 : начальный год
- * @param string $tag_name : имя тега
- * @param null|int $selected : значение для выбора
- * @param string $tag_attribs : дополнительные атрибуты тега
- * @param null|int $year2 : конечный год (если не задан, то текущий)
- *
- * @return string : HTML-код
- *
- * @example:
- * echo LibDateTime::selectYear(2000, 'qqq');
- * echo LibDateTime::selectYear(2000, 'qqq', 2013);
- * echo LibDateTime::selectYear(2000, 'qqq', '', ' id="qq1" style="color:#900"', 2020);
- */
- public static function selectYear($year1, $tag_name, $selected = null, $tag_attribs = '', $year2 = null)
- {
- $result = '';
- }
- $result .= '<select name="' . $tag_name . ' ' . $tag_attribs . '">';
- for ($i = $year1; $i <= $year2; $i++) {
- $extra = ($i == $selected) ? ' selected="selected"' : '';
- $result .= '<option value="' . $i . '" ' . $extra . '>' . $i . '</option>';
- }
- $result .= '</select>';
- return $result;
- }
- }