Перевод числа в дату php

date

Возвращает строку, отформатированную в соответствии с указанным в параметре format шаблоном. Используется метка времени, заданная параметром timestamp (метка времени Unix), или текущее системное время, если параметр timestamp не задан. Таким образом, параметр timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .

Метки времени Unix не обрабатывают часовые пояса. Используйте класс DateTimeImmutable и его метод форматирования DateTimeInterface::format() для форматирования информации о дате/времени с привязкой к часовому поясу.

Список параметров

Замечание: Функция date() всегда будет генерировать 000000 в качестве микросекунд, поскольку она принимает параметр int , тогда как DateTime::format() поддерживает микросекунды, если DateTime был создан с микросекундами.

Необязательный параметр timestamp представляет собой метку времени типа int , по умолчанию равную текущему локальному времени, если timestamp не указан или null . Другими словами, значение по умолчанию равно результату функции time() .

Возвращаемые значения

Возвращает отформатированную строку с датой.

Ошибки

Каждый вызов к функциям даты/времени при неправильных настройках часового пояса сгенерирует ошибку уровня E_WARNING , если часовой пояс некорректный. Смотрите также date_default_timezone_set()

Список изменений

Версия Описание
8.0.0 timestamp теперь допускает значение null.

Примеры

Пример #1 Примеры использования функции date()

// установка часового пояса по умолчанию.
date_default_timezone_set ( ‘UTC’ );

// выведет примерно следующее: Monday
echo date ( «l» );

// выведет примерно следующее: Monday 8th of August 2005 03:12:46 PM
echo date ( ‘l jS \of F Y h:i:s A’ );

// выведет: July 1, 2000 is on a Saturday
echo «July 1, 2000 is on a » . date ( «l» , mktime ( 0 , 0 , 0 , 7 , 1 , 2000 ));

/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: Mon, 15 Aug 2005 15:12:46 UTC
echo date ( DATE_RFC822 );

// выведет примерно следующее: 2000-07-01T00:00:00+00:00
echo date ( DATE_ATOM , mktime ( 0 , 0 , 0 , 7 , 1 , 2000 ));
?>

Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.

Пример #2 Экранирование символов в функции date()

Для вывода прошедших и будущих дат удобно использовать функции date() и mktime() .

Пример #3 Пример совместного использования функций date() и mktime()

$tomorrow = mktime ( 0 , 0 , 0 , date ( «m» ) , date ( «d» )+ 1 , date ( «Y» ));
$lastmonth = mktime ( 0 , 0 , 0 , date ( «m» )- 1 , date ( «d» ), date ( «Y» ));
$nextyear = mktime ( 0 , 0 , 0 , date ( «m» ), date ( «d» ), date ( «Y» )+ 1 );
?>

Замечание:

Данный способ более надёжен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.

Ещё несколько примеров использования функции date() . Важно отметить, что следует экранировать все символы, которые необходимо оставить без изменений. Это справедливо и для тех символов, которые в текущей версии PHP не распознаются как форматирующие, поскольку это может быть введено в следующих версиях. Для экранировании управляющих последовательностей (например, \n) следует использовать одинарные кавычки.

Пример #4 Форматирование с использованием date()

// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся в часовом поясе Mountain Standard Time (MST)

$today = date ( «F j, Y, g:i a» ); // March 10, 2001, 5:16 pm
$today = date ( «m.d.y» ); // 03.10.01
$today = date ( «j, n, Y» ); // 10, 3, 2001
$today = date ( «Ymd» ); // 20010310
$today = date ( ‘h-i-s, j-m-y, it is w Day’ ); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date ( ‘\i\t \i\s \t\h\e jS \d\a\y.’ ); // it is the 10th day.
$today = date ( «D M j G:i:s T Y» ); // Sat Mar 10 17:16:18 MST 2001
$today = date ( ‘H:m:s \m \i\s\ \m\o\n\t\h’ ); // 17:03:18 m is month
$today = date ( «H:i:s» ); // 17:16:18
$today = date ( «Y-m-d H:i:s» ); // 2001-03-10 17:16:18 (формат MySQL DATETIME)
?>

Для форматирования дат на других языках вместо функции date() можно использовать метод IntlDateFormatter::format() .

Примечания

Замечание:

Для получения метки времени из строкового представления даты можно воспользоваться функцией strtotime() . Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (например, функция MySQL » UNIX_TIMESTAMP).

Временную метку начала запроса можно получить из поля $_SERVER[‘REQUEST_TIME’] .

Смотрите также

  • DateTimeImmutable::__construct() — Возвращает новый объект DateTimeImmutable
  • DateTimeInterface::format() — Возвращает дату, отформатированную согласно переданному формату
  • gmdate() — Форматирует дату/время по Гринвичу
  • idate() — Преобразует локальное время/дату в целое число
  • getdate() — Возвращает информацию о дате/времени
  • getlastmod() — Получает время последней модификации страницы
  • mktime() — Возвращает метку времени Unix для заданной даты
  • IntlDateFormatter::format() — Форматирует значение даты/времени в виде строки
  • time() — Возвращает текущую метку системного времени Unix
  • Предопределённые константы даты и времени

User Contributed Notes

  • Функции даты и времени
    • checkdate
    • date_​add
    • date_​create_​from_​format
    • date_​create_​immutable_​from_​format
    • date_​create_​immutable
    • date_​create
    • date_​date_​set
    • date_​default_​timezone_​get
    • date_​default_​timezone_​set
    • date_​diff
    • date_​format
    • date_​get_​last_​errors
    • date_​interval_​create_​from_​date_​string
    • date_​interval_​format
    • date_​isodate_​set
    • date_​modify
    • date_​offset_​get
    • date_​parse_​from_​format
    • date_​parse
    • date_​sub
    • date_​sun_​info
    • date_​sunrise
    • date_​sunset
    • date_​time_​set
    • date_​timestamp_​get
    • date_​timestamp_​set
    • date_​timezone_​get
    • date_​timezone_​set
    • date
    • getdate
    • gettimeofday
    • gmdate
    • gmmktime
    • gmstrftime
    • idate
    • localtime
    • microtime
    • mktime
    • strftime
    • strptime
    • strtotime
    • time
    • timezone_​abbreviations_​list
    • timezone_​identifiers_​list
    • timezone_​location_​get
    • timezone_​name_​from_​abbr
    • timezone_​name_​get
    • timezone_​offset_​get
    • timezone_​open
    • timezone_​transitions_​get
    • timezone_​version_​get

    Источник

    idate

    Returns a number formatted according to the given format string using the given integer timestamp or the current local time if no timestamp is given. In other words, timestamp is optional and defaults to the value of time() .

    Unlike the function date() , idate() accepts just one char in the format parameter.

    Parameters

    The following characters are recognized in the format parameter string

    format character Description
    B Swatch Beat/Internet Time
    d Day of the month
    h Hour (12 hour format)
    H Hour (24 hour format)
    i Minutes
    I (uppercase i) returns 1 if DST is activated, 0 otherwise
    L (uppercase l) returns 1 for leap year, 0 otherwise
    m Month number
    N ISO-8601 day of the week ( 1 for Monday through 7 for Sunday)
    o ISO-8601 year (4 digits)
    s Seconds
    t Days in current month
    U Seconds since the Unix Epoch — January 1 1970 00:00:00 UTC — this is the same as time()
    w Day of the week ( 0 on Sunday)
    W ISO-8601 week number of year, weeks starting on Monday
    y Year (1 or 2 digits — check note below)
    Y Year (4 digits)
    z Day of the year
    Z Timezone offset in seconds

    The optional timestamp parameter is an int Unix timestamp that defaults to the current local time if timestamp is omitted or null . In other words, it defaults to the value of time() .

    Return Values

    Returns an int on success, or false on failure.

    As idate() always returns an int and as they can’t start with a «0», idate() may return fewer digits than you would expect. See the example below.

    Errors/Exceptions

    Every call to a date/time function will generate a E_WARNING if the time zone is not valid. See also date_default_timezone_set()

    Changelog

    Version Description
    8.2.0 Adds the N (ISO-8601 day of the week) and o (ISO-8601 year) format characters.
    8.0.0 timestamp is nullable now.

    Examples

    Example #1 idate() example

    $timestamp = strtotime ( ‘1st January 2004’ ); //1072915200

    // this prints the year in a two digit format
    // however, as this would start with a «0», it
    // only prints «4»
    echo idate ( ‘y’ , $timestamp );
    ?>

    See Also

    • DateTimeInterface::format() — Returns date formatted according to given format
    • date() — Format a Unix timestamp
    • getdate() — Get date/time information
    • time() — Return current Unix timestamp

    User Contributed Notes

    • Date/Time Functions
      • checkdate
      • date_​add
      • date_​create_​from_​format
      • date_​create_​immutable_​from_​format
      • date_​create_​immutable
      • date_​create
      • date_​date_​set
      • date_​default_​timezone_​get
      • date_​default_​timezone_​set
      • date_​diff
      • date_​format
      • date_​get_​last_​errors
      • date_​interval_​create_​from_​date_​string
      • date_​interval_​format
      • date_​isodate_​set
      • date_​modify
      • date_​offset_​get
      • date_​parse_​from_​format
      • date_​parse
      • date_​sub
      • date_​sun_​info
      • date_​sunrise
      • date_​sunset
      • date_​time_​set
      • date_​timestamp_​get
      • date_​timestamp_​set
      • date_​timezone_​get
      • date_​timezone_​set
      • date
      • getdate
      • gettimeofday
      • gmdate
      • gmmktime
      • gmstrftime
      • idate
      • localtime
      • microtime
      • mktime
      • strftime
      • strptime
      • strtotime
      • time
      • timezone_​abbreviations_​list
      • timezone_​identifiers_​list
      • timezone_​location_​get
      • timezone_​name_​from_​abbr
      • timezone_​name_​get
      • timezone_​offset_​get
      • timezone_​open
      • timezone_​transitions_​get
      • timezone_​version_​get

      Источник

      PHP: Перевод даты в формате числа Double (MS Access) в формат даты PHP и наоборот

      Блог доброго программиста

      Сегодня мы поговорим о том, как преобразовать дату, представленную в виде числа типа double (используется в базе MS Access) в привычный многим формат даты языка PHP.
      Для того чтобы перевести дату, представленную числом с плавающей точкой, в привычный формат нужно понимать, что обозначает это число. Вот цитата из документации Microsoft:

      Тип данных «Дата/Время» хранится в Access в формате числа двойной точности с плавающей запятой и числом десятичных разрядов до 15. Целая часть числа двойной точности представляет собой дату. Дробная часть представляет время.
      Дата может принимать значения от -657 434 (1 января 100 г. н.э.) до 2 958 465 (31 декабря 9999 г. н.э.). Нулевому значению даты соответствует 30 декабря 1899 г. Даты до 30 декабря 1899 г. хранятся в Access в виде отрицательных чисел.
      Время может принимать значения от 0,0 (00:00:00) до 0,99999 (23:59:59). Числовое значение представляет собой долю дня. Можно перевести числовое значение в часы, минуты и секунды, умножив его на 24.

      Почему майкрософт решил пойти таким путем я не знаю, возможно в этом есть какой то смысл. Однако много разработчиков сталкиваются с проблемой как же преобразовать такое число в привычный формат даты. Я приведу пример функции данного преобразования на языке PHP, однако логика реализации на других языках будет аналогична.

      function fsMsDoubleDateToPhpTime($doubleDate, $asTime = true) < $result = strtotime('+'.((int)$doubleDate).' days', strtotime('1899-12-30 00:00:00')); $seconds = ($doubleDate - (int)$doubleDate) * 86400; //86400 количество секунд в сутках return $asTime ? $result + $seconds : date('Y-m-d H:i:s', $result + $seconds); >

      PS: Для тех кто не знаком с логикой работы PHP, функция strtotime возвращает число секунд, прошедших с полуночи 1 января 1970 года. Соответственно переменная $result хранит число секунд, прошедших с данной даты, до высчитываемой даты.

      Как видно ничего сложного нет. Логика проста и понятна:
      1) Получаем число прошедших дней и прибавляем их к начальной дате в результате получаем нужный день.
      2) Высчитываем сколько секунд прошло от начала нужной даты (это в любом случае будет менее 1 суток (менее 86400)) и прибавляем их к результату.

      Зная это, легко написать обратную функцию преобразования даты PHP в формат даты MS Access. Однако в данном случае стоит учесть временную зону сервера.

      function fsPhpTimeToMsDoubleDate($timeOrDate) < $zone = date_default_timezone_get(); date_default_timezone_set('UTC'); if(!is_numeric($timeOrDate)) $timeOrDate = strtotime($timeOrDate); $dateFrom = $timeOrDate - strtotime('1899-12-30 00:00:00'); $days = (int)($dateFrom / 86400); date_default_timezone_set($zone); return $days + ($timeOrDate % 86400 / 86400); >

      Важно: Так же в связи с тем, что из расчетов были выброшены миллисекунды, при преобразовании дат, возможна погрешность в одну секунду. В большинстве случаев она не критична, однако если Вам нужны точные преобразования, необходимо учитывать и миллисекунды во время преобразования времени.

      Источник

    Читайте также:  Генерация выборки нормального распределения python
Оцените статью