Как получить datetime php

Дата и время

  • Введение
  • Установка и настройка
    • Требования
    • Установка
    • Настройка во время выполнения
    • Типы ресурсов
  • Предопределенные константы
  • DateTime — Класс DateTime
    • DateTime::add — Добавляет заданное количество дней, месяцев, лет, часов, минут и секунд в объект DateTime
    • DateTime::__construct — Конструктор класса DateTime
    • DateTime::createFromFormat — Создает и возвращает экземпляр класса Класс DateTime, соответствующий заданному формату
    • DateTime::getLastErrors — Возвращает предупреждения и ошибки
    • DateTime::modify — Изменяет отметку времени
    • DateTime::__set_state — контроллер __set_state
    • DateTime::setDate — Установка даты
    • DateTime::setISODate — Установка даты ISO
    • DateTime::setTime — Установка времени
    • DateTime:: setTimestamp — устанавливает дату и время на основе временной метки Unix
    • DateTime::setTimezone — Устанавливает часовой пояс для объекта класса DateTime
    • DateTime::sub — Вычитает указанное количество дней, месяцев, лет, часов, минут и секунд из DateTime
  • DateTimeImmutable — класс DateTimeImmutable
    • DateTimeImmutable::add — добавляет указанное количество дней, месяцев, лет, часов, минут и секунд.
    • DateTimeImmutable::__construct — Возвращает новый объект DateTimeImmutable
    • DateTimeImmutable::createFromFormat — Возвращает новый объект DateTimeImmutable, отформатированный в соответствии с заданным форматом
    • DateTimeImmutable::createFromMutable — Возвращает новый объект DateTimeImmutable, инкапсулирующий заданный объект DateTime
    • DateTimeImmutable::getLastErrors — Возвращает предупреждения и ошибки
    • DateTimeImmutable ::modify — Создает новый объект с измененной отметкой времени
    • DateTimeImmutable: :__set_state — контроллер __set_state
    • DateTimeImmutable::setDate — Устанавливает дату
    • DateTimeImmutable::setISODate — Устанавливает дату в формате ISO
    • DateTimeImmutable::setTime — Устанавливает время
    • DateTimeImmutable::setTimestamp — Устанавливает дату и время с отметкой времени Unix
    • DateTimeImmutable::setTimezone — Устанавливает часовой пояс
    • DateTimeImmutable::sub — Вычитает заданное количество дней, месяцев, лет, часов, минут и секунд
  • Интерфейс DateTime — Интерфейс DateTime
    • DateTime::diff — Возвращает разницу между двумя объектами D ateTime
    • DateTime::format — Возвращает дату, отформатированную в соответствии с заданным форматом
    • DateTime::getOffset — Возвращает смещение от часового пояса
    • DateTime::getTimestamp — Возвращает метку времени Unix
    • DateTime::getTimezone — Возвращает часовой пояс относительно текущего DateTime
    • DateTime::__wakeup — Handler __wakeup
  • DateTimeZone — Класс DateTimeZone
    • DateTimeZone::__construct — Создает новый объект DateTimeZone
    • DateTimeZone::getLocation — Возвращает информацию о местоположении для часового пояса
    • DateTimeZone::getName — Возвращает имя часового пояса
    • DateTimeZone::getOffset — Возвращает смещение часового пояса от GMT
    • DateTimeZone::getTransitions — Возвращает все переходы для часового пояса
    • DateTimeZone::listAbbreviations — Возвращает ассоциативный массив, содержащий индикатор перехода на летнее время, смещение и название часового пояса
    • DateTimeZone::listIdentifiers — Возвращает численно проиндексированный массив всех идентификаторов из зоны хорарии
  • Интервал дат — Класс Интервал дат
    • DateInterval::__construct — Создает новый объект DateInterval
    • DateInterval::createFromDateString — создает объект DateInterval, используя заданную строку
    • DateInterval::format — форматирует интервал
  • DatePeriod — Класс DatePeriod
    • DatePeriod:: __construct — Создает новый объект DatePeriod
  • Функция date and time
    • checkdate — Проверяет правильность даты по григорианскому календарю
    • date_add — Псевдоним для DateTime::add
    • date_create_from_format — Псевдоним​ ​​​DateTime: : createFromFormat
    • date_create_immutable_from_format — Псевдоним DateTimeImmutable::createFromFormat
    • date_create_immutable — Псевдоним​​из DateTimeImmutable::__construct
    • date_create — Псевдоним для DateTime::__ 5>
    • date_date_set — псевдоним DateTime::setDate
    • date_default_timezone_get: возвращает часовой пояс по умолчанию, используемый всеми функциями даты и времени в скрипте
    • date_default_timezone_set: устанавливает часовой пояс по умолчанию для всех дат/времени функций в скрипте
    • date_diff — Псевдоним для DateTime::diff
    • date_format — Псевдоним для DateTime::format
    • date_get_last_errors — Псевдоним для DateTime: : getLastErrors
    • date_interval_create_from_date_string — Псевдоним DateInterval::createFromDateString
    • date_interval_format — Псевдоним для DateInterval::format
    • date_isodate_set — Псевдоним для DateTime::setISODate
    • date_modify — Псевдоним для DateTime::modify
    • date_offset_get — Псевдоним для DateTime::getOffset
    • date_parse_from_format — Получить информацию о заданной дате в указанном формате
    • date_parse — возвращает ассоциативное поле с реквизитами информация о заданной дате
    • date_sub — Псевдоним для DateTime::sub
    • date_sun_info — Возвращает массив с информацией о закате/восходе и закате над началом/концом
    • date_sunrise — возвращает время восхода солнца для указанного дня и места
    • date_sunset — возвращает время заката для указанного дня и места
    • date_time_set — псевдоним DateTime::setTime
    • date_timestamp_get — Псевдоним для DateTime::getTimestamp
    • date_timestamp_set — Псевдонимы для DateTime::setTimestamp
    • date_timezone_get — Псевдонимы для DateTime::getTimezone
    • date_timezone_set — Псевдонимы для DateTime::setTimezone
    • date: Формат вывода даты/времени
    • getdate — возвращает информацию о дате и времени
    • gettimeofday — возвращает текущее время <5
    • gmd ate — формат даты/времени по Гринвичу
    • gmmktime: возвращает временную метку Unix для GMT
    • gmstrftime: форматирует дату и время GMT на основе текущей локали
    • idate — преобразует местное время/дату в целое число
    • localtime — Возвращает местное время
    • microtime — Возвращает текущую метку времени Unix в микросекундах
    • mktime — Возвращает метку времени Unix для заданной даты
    • strftime — Формат текущего дата/время на основе текущей локали
    • strptime — Analy возвращает строку даты/времени, сгенерированную функцией strftime
    • strtotime — преобразует английское текстовое представление даты в метку времени Unix
    • time — возвращает текущую метку времени Unix
    • timezone_abbreviations_list — DateTimeZone::listAbbreviations
    • alias

    • timezone_identifiers_list — Псевдонимы для DateTimeZone::listIdentifiers
    • timezone_location_get — Псевдонимы для DateTimeZone::getLocation
    • timezone_name_from_abbr — Возвращает часовой пояс на основе аббревиатуры
    • timezone_name_get — Псевдоним для DateTimeZone::getName
    • timezone_offset_get — Псевдоним для DateTimeZone::getOffset
    • timezone_open — Псевдоним для DateTimeZone::__construct
    • timezone_transitions_get — Псевдоним для DateTimeZone::getTransition ns
    • timezone_version_get — Получить номер версии базы данных часовых поясов
  • Допустимые форматы даты и времени
    • Форматы времени
    • Форматы даты
    • Форматы макета
    • Пропорциональные форматы
  • Список поддерживаемых часовых поясов
    • Африка
    • Америка
    • Антарктида
    • Арктика
    • Азия
    • Атлантика
    • Австралия
    • Европа
    • Индия
    • Тихий океан
    • Другие
Читайте также:  Как открыть свой шоу рум женской одежды

Источник

DateTime::__construct

(PHP 5>= 5.2.0, PHP 7, PHP 8)

DateTime::__construct — Конструктор для класса DateTime

Описание

Аналогичен конструктору DateTimeImmutable::__construct(), за исключением того, что он работает с объектом DateTime. Рассмотрите возможность использования класса DateTimeImmutable вместо этого класса.

Возвращает новый объект DateTime.

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

Строка даты/времени. Информацию о правильных форматах см. в разделе Форматы даты и времени.

Если используется аргумент $timezone, передача «now», поскольку этого аргумента достаточно, чтобы получить текущее время в новом объекте.

Объект класса DateTimeZone, который представляет часовой пояс параметра $datetime.

Если $timezone не указан или null , будет использоваться текущий часовой пояс.

Значение аргумента $timezone, а также текущий часовой пояс будут игнорироваться, если аргумент $datetime является UNIX отметка времени (например, @946684800) или время уже в часовом поясе (например, 2010-01 — 28T15:00:00+02:00 ).

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

Возвращает созданный объект DateTime. процедурный стиль возвращает false при ошибке.

См. также

  • DateTimeImmutable::__construct() — возвращает новый DateTimeImmutable

По добавленным пользователем заметкам 18 заметок

Теоретические ограничения по времени от «-9999-01-01» до «9999-12-31» (PHP 5.2 .9 в Windows Vista 64):

= новый DateTime(«9999-12-31»);
$d -> формат(«Г-мд»); // «9999-12-31»

$d = new DateTime(«0000-12-31»);
$d -> формат(«Г-мд»); // «0000-12-31»

$d = new DateTime(«-9999-12-31»);
$d -> формат(«Г-мд»); // «-9999-12-31»

?>

Данные выше 10000 и ниже -10000 не вызывают ошибок, но выдают странные результаты:

= new DateTime(«10019-01-01»);
$d -> формат(«Г-м-д»); // «2009-01-01»

$d = new DateTime(«10009-01-01»);
$d -> формат(«Г-мд»); // «2009-01-01»

$d = new DateTime(«-10019-01-01»);
$д-> формат(«Г-мд»); // «2009-01-01»

Обратите внимание, что фактор DateTime также принимает логические ложные и пустые строки и обрабатывает их так же, как NULL (т. е. приводит к текущей дате и времени). Это может привести к неожиданным результатам, если вы передаете возвращаемые значения функции без предварительной их явной проверки.

Пустые поля и истинные логические значения вызывают предупреждения PHP OTOH.

Читайте также:  Как открыть свой салон этапы

(Проверено с PHP 5.5. 18 )

Очевидный (хотя и задокументированный) «подводный камень», существующий в __construct, заключается в том, что он игнорирует ваш часовой пояс, если $time является меткой времени. Хотя это может и не иметь смысла, объект предоставляет методы для исправления.

// Новый объект часового пояса
$timezone = new DateTimeZone(‘America/New_York’);

/ / Новый объект DateTime
$date = new DateTime ( ‘@1306123200’ , $timezone );

// Ожидается дата 2011-05-23 00:00:00
// Но фактически возвращает 2011-05 -23 04:00:00
echo $date -> format(‘Y-m-d H:i:s’);

// Вы по-прежнему можете установить часовой пояс следующим образом.
$дата -> setTimezone ($timezone);

// Теперь будет выведено 2011-05-23 00:00:00
echo $date -> формат (‘Y-m-d H:i:s’);
?>

Примечание.

Если вы не установили часовой пояс по умолчанию, будет выдано исключение (или ошибка, если PHP

Если нет, он может анализировать время, генерируется исключение типа Exception, которое может быть перехвачено, но также выдается E_WARNING. Это может сбивать с толку, если вы конвертируете предупреждения в исключения. в вашем обработчике ошибок или отключений.

try
$var = new DateTime(‘какой-то недопустимый формат даты’);
>
catch (Исключение $ex) <>
$warning = error_get_last(); // будет содержать предупреждение
?>

Будьте осторожны при работе с данными MySQL, представляющими точку перехода на летнее время.
Конструктор DateTime преобразует аббревиатуру часового пояса в летнее время, но не время.

= new DateTimeZone(‘Europe/Sofia’);

$transitionToDst = ‘2014-03- 30 03: 00:00’ ;

$date = new datetime ($transitionToDst, $timeZone);

// Выходные данные: воскресенье, 30 марта 2014 г., 3:00:00 EEST
// Успех: 30 марта 2014 г., 4:00:00 EEST
echo $date -> формат (‘DM j, Y G:i:s T’). ‘
‘ ;

// Явная установка часового пояса или добавление секунды исправляет это
$cloneForAdding = clone $date ;

$date -> setTimeZone ($timeZone);

// Выходные данные: воскресенье, 30 марта 2014 г., 4:00:00 по восточному поясному времени
echo $date -> формат (‘DM j, Y G:i:s T’). ‘
‘ ;

$cloneToAdd -> add(new date range(‘PT1S’));

// Выводы: 30 марта 2014 г., 4:00:01 по восточному поясному времени
echo $cloneForAdding -> format ( ‘D M j, Y G:i:s T’ );

«Параметры $timezone и текущий часовой пояс игнорируются, если параметр $time […] является отметкой времени UNIX.»

Внимание: это означает, что они НЕ эквивалентны, что приводит к разным часовым поясам (если ваш текущий часовой пояс не GMT):

= new datetime(); $д-> установить отметку времени ($ t);
эхо $o -> формат(‘О’);
// +0200

$d = new DateTime(‘@’. $t);
эхо $o -> формат(‘О’);
// +0000
?>

Что касается конструкции DateTime, вместо того, чтобы просто использовать год, кажется, что она работает, когда дата соответствует шаблону «ГГГГ-ММ»

— Возвращает правильный год: «ГГГГ-ММ»

$ cat date.php
= new DateTime (‘2015-12’);
echo($date -> format(‘A’));
?>

$ php date.php
2015

— игнорирует введенные данные и возвращает год от СЕЙЧАС: «ГГГГ»

$ cat date.php
= новая дата и время (‘2015’);
echo($date -> format (‘Y’));
?>

$ php date.php
2019

РЕЗУЛЬТАТЫ / ОБЛАСТЬ ПРИМЕНЕНИЯ:
— Linux (24 мая 2019 г.)
— PHP 7.2.17 (cli)

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

Следовательно, следующий код не приведет к ошибке или вызову исключение. Таким образом, $time не будет пустой строкой.

$value = ‘y’;
попробуйте <
$time = новый \DateTimeZone($value);
> поймать (\Exception $e) <
$время = »;
>

Я удивлен, что это не было упомянуто, но при построении DateTime только с годом в виде строки DateTime предварительно инициализируется значением NOW, а затем заменяет год, поэтому, если сегодня 12.07.2016 :

Читайте также:  Как открыть тройную розетку

print((new DateTime(‘2015’))->edit(‘+1 day’)->format(‘Y-m-d’));
?>

результаты от 13 июля 2016 г.

Похоже, что он работает как положено, по крайней мере, на данный момент:

= new \ DateTimeZone(‘Europe/ Sofia ‘);
$timezone2 = new \ DateTimeZone(‘UTC’);
$sometime1 = ‘30.03.2014 02:59:59’ ;
$sometimes2 = ‘30.03.2014 03:00:00’;
$date1 = new \ DateTime ($sometime1, $timezone1);
$date2 = new \ DateTime ($sometime2, $timezone1);
echo $date1 -> формат (‘DM j, Y G:i:s T’). ‘
‘;
echo $date2 -> формат (‘DM j, Y G:i:s T’). ‘
‘;
$дата1 -> установитьЧасовой пояс ($ часовой пояс1);
$дата2 -> установитьЧасовой пояс ($ часовой пояс1);
echo $date1 -> формат (‘DM j, Y G:i:s T’). ‘
‘;
echo $date2 -> формат (‘DM j, Y G:i:s T’). ‘
‘;
$дата1 -> установитьЧасовой пояс ($ часовой пояс2);
$дата2 -> установитьЧасовой пояс ($ часовой пояс2);
echo $date1 -> формат (‘DM j, Y G:i:s T’). ‘
‘;
echo $date2 -> формат (‘DM j, Y G:i:s T’). ‘
‘ ;

Эти отправления:
Воскресенье, 30 марта 2014 г. 2:59:59 EET
Воскресенье, 30 марта 2014 г., 4:00:00 EEST
Воскресенье, 30 марта 2014 г. 2: 59:59 EET
Вс 30 марта 2014 4:00:00 EEST
Вс 30 марта 2014 0:59:59 UTC
Вс 30 марта 2014 1:00:00 UTC

= время();
$timestamp = $timestampNow + 13 ;
$datetime = new \ DateTime («@ < $timestamp >», new \ DateTimeZone (‘Европа/Берлин’));
echo $datetime -> получить часовой пояс()-> получитьИмя(); // +00:00 .
?>
НЕ РАБОТАЕТ. Всегда получает UTC.

вместо этого используйте относительное форматирование:
= 13 ;
$дата/время = new \ DateTime («now + < $sec >sec», new \ DateTimeZone («Европа/Берлин» ));
echo $datetime -> получитьЧасовой пояс()-> получитьИмя(); // Европа/Берлин
?>
см. http://php.net/manual/en/datetime.formats.relative.php

Я также забыл упомянуть, что «обнуленные» даты MySQL не выдают ошибку, а создают дату без смысла :

= new DateTime(«0000-00-00»);
$d -> формат(«Г-м-д»); // «-0001-11-30»

?>

Еще одна веская причина для написания собственного класса, расширяющего класс DateTime.

Передача строки даты, отличной от американской или не SQL, приведет к неправильному форматированию даты.

// Дата Соединенного Королевства д/м/г.
$date_time = «03.08.2016 00:00:00»;

$dt = new DateTime($date_time, new DateTimeZone(«Европа/Лондон»));

// Da 2016-08-03
echo $dt->format(«Y-m-d»);

Эта функция обрабатывает невозможное время из-за перехода на летнее время аналогично невозможным датам, за исключением того, что они не являются ошибочными (т.е. последующий вызов DateTime::getLastError() ничего не возвращает).

Например:
В часовом поясе «Европа/Берлин» не было 02:30 в воскресенье, 30 марта 2014 г., потому что время в этот день было пропущено из-за перехода на летнее время.

= new DateTimeZone(«Europe/Berlin»);
$impossible_time = «2014-03-30T02:30:00» ;
$date = new DateTime ($impossible_time, $tz);
var_dump ($date -> getLastErrors());
echo «Невозможное время ‘$impossible_time’ интерпретируется как: » . $дата-> Формат (ДатаВремя::ISO8601). «\n» ;

/*
Производительность:
массив(4) <
‘warning_count’ =>
int(0)
‘предупреждение’ =>
массив(0) <
>
‘error_count’ =>
int(0)
‘ошибки’ =>
массив(0) <
>
>
Невозможное время ‘2014-03-30T02:30:00’ интерпретируется как: 2014-03-30T03:30:00+ 0200
*/
?>

Аналогично решению, например, 29 февраля 2014 г., которое будет интерпретировано как 1 марта 2014 г. Разница в том, что это будет ошибка с датой, но не со временем. это так.

Неоднозначные расписания из-за перехода на летнее время обрабатываются как второй вариант. Например, время 2:30 утра. m произошло дважды 26 октября 2014 г. в часовом поясе «Europe/Berlin».

= new DateTimeZone(«Europe/Berlin»);
$ambiguous_time = «2014-10-26T02:30:00» ;
$date = new DateTime ($ambiguous_time, $tz);
echo «Неоднозначное время ‘$ambiguous_time’ интерпретируется как: » . $дата-> формат (ДатаВремя::ISO8601). «\n» ;

/*
Выдает:
Неоднозначное время ‘2014-10-26T02:30:00’ интерпретируется как: 2014-10-26T02:30:00+0100
*/
?>

Правильный ответ также будет «2014-10-26T02:30:00+0200» часом раньше.

Источник

Поделиться с друзьями
Решатор