php преобразовать строку в дату по формату
Преобразование форматов даты в PHP
Есть ли простой способ преобразовать один формат даты в другой в PHP?
$old_date = date(‘y-m-d-h-i-s’); // работает
$middle = strtotime($old_date); // возвращает false
Хотелось бы, чтобы код возвращал текущую дату. Что я делаю неправильно?
Ответ 1
Второй параметр date() должен быть точной меткой времени (секунды с 1 января 1970 г.). Вы же передаете строку, которую date() не может распознать.
Можно использовать strtotime() для преобразования строки даты в метку времени. Однако даже strtotime() не распознает y-m-d-h-i-s формат.
PHP 5.3 и выше
PHP 5.2 и ниже
// возвращает текущую дату и время
$old_date = date(‘l, F d y h:i:s’);
Ответ 2
Самый простой способ сделать это:
Это позволяет избежать использования strtotime, с которой иногда может быть сложно работать.
Если вы не переходите из одного формата даты в другой, а просто хотите, чтобы текущая дата (или datetime) была в определенном формате, это еще проще:
Ответ 3
Основы
Т о ж е самое в одной строке:
$new_date_format = date(‘Y-m-d H:i:s’, strtotime(‘2021-07-01T22:35:17.02’));
С использованием DateTime()
$date = new DateTime(‘2021-07-01T22:35:17.02’);
Работа с отметками времени Unix
date() принимает временную метку Unix в качестве второго параметра и возвращает отформатированную дату:
$new_date_format = date(‘Y-m-d H:i:s’, ‘1234567890’);
DateTime() работает с отметками времени Unix, добавляя символ « @» перед отметкой времени:
$date = new DateTime(‘@1234567890’);
Разделите substr на 1000
Поскольку метка времени слишком велика для 32-битных систем, чтобы выполнить математические вычисления, нужно будет использовать библиотеку BCMath для выполнения математических расчетов в виде строк:
$timestamp = bcdiv(‘1234567899000’, ‘1000’);
Чтобы получить временную метку Unix, можно использовать strtotime() :
С DateTime () используетс я DateTime::getTimestamp()
$date = new DateTime(‘2021-07-01T22:35:17.02’);
Если вы используете PHP 5.2, можно использовать параметр форматирования «U»:
$date = new DateTime(‘2021-07-01T22:35:17.02’);
Работа с нестандартными и неоднозначными форматами даты
К сожалению, не все даты, с которыми приходится работать разработчику, имеют стандартный формат. К счастью, в PHP 5.3 появилось решение для этого. DateTime::createFromFormat() позволяет нам сообщить PHP, в каком формате находится строка даты, чтобы ее можно было успешно преобразовать в объект DateTime для дальнейших манипуляций.
$date = DateTime::createFromFormat(‘F-d-Y h:i A’, ‘April-18-1973 9:48 AM’);
В PHP 5.4 мы получили возможность делать доступ к членам класса при создании экземпляра, что позволяет нам превратить наш DateTime() в однострочный код:
$new_date_format = (new DateTime(‘2021-07-01T22:35:17.02’))->format(‘Y-m-d H:i:s’);
$new_date_format = DateTime::createFromFormat(‘F-d-Y h:i A’, ‘April-18-1973 9:48 AM’)->format(‘Y-m-d H:i:s’);
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
PHP | Преобразование строки в Date и DateTime
Преобразование строки в Date и DateTime использует несколько функций / методов, таких как strtotime (), getDate (). Посмотрим, что делают эти функции.
strtotime () — в основном это функция, которая возвращает количество секунд, прошедших с 1 января 1970 года, точно так же, как отметка времени машины linux. Возвращает количество секунд, переданных в соответствии с параметром, переданным функции.
Синтаксис
параметр
Возвращаемый тип Возвращает количество секунд, прошедших с 1 января 1970 года.
getDate () Эта функция возвращает информацию о дате / времени переданного параметра (дата / время);
Синтаксис
Параметр Параметр является необязательным, поскольку он принимает текущее местное время в качестве параметра по умолчанию.
Возвращаемый тип Возвращает информацию о дате, дне, году, месяце и т. Д. В массиве.
Код для преобразования строки в дату
$time_input = strtotime ( «2011/05/21» );
Код для преобразования строки в dateTime
$input = ’06/10/2011 19:00:02′ ;
Примечание1 Мы можем использовать «D» вместо «d» для получения дня в выходных данных
$input = ’05/10/2011 15:00:02′ ;
Примечание 2 Мы можем использовать «H» вместо «h» для получения времени в 24-часовом формате на выходе
$input = ’05/10/2011 15:00:02′ ;
Точно так же, «i» и «s» также можно изменить на прописные, чтобы найти разные выходные данные, это возможно, но не очень полезно.
PHP Дата и время
PHP функция date() используется для форматирования даты и/или времени.
PHP функция Date()
PHP функция date() форматирует метку времени для более удобочитаемой даты и времени.
Синтаксис
Параметр | Описание |
---|---|
format | Обязательный. Определяет формат отметки времени |
timestamp | Необязательный. Определяет метку времени. По умолчанию текущая дата и время |
Получить дату
Обязательный параметр format функции date() указывает, как форматировать дату (или время).
Вот некоторые символы, которые обычно используются для дат:
Другие символы, такие как «/», «.», или «-» также могут быть вставлены между символами для добавления дополнительного форматирования.
Пример ниже форматирует сегодняшнюю дату тремя различными способами:
Пример
Используйте функцию date() для автоматического обновления года авторских прав (copyright) на вашем веб-сайте:
Пример
Получить время
Вот некоторые символы, которые обычно используются для указания времени:
В приведенном ниже примере выводится текущее время в указанном формате:
Пример
Получите ваш часовой пояс
Если время, которое вы вернули из кода, неверно, возможно, это потому, что ваш сервер находится в другой стране или настроен на другой часовой пояс.
Таким образом, если вам нужно время, чтобы быть точным в зависимости от конкретного места, вы можете установить часовой пояс, который вы хотите использовать.
В приведенном ниже примере для часового пояса установлено значение «America/New_York», а затем выводится текущее время в указанном формате:
Пример
Создать дату с помощью mktime()
Необязательный параметр timestamp в функции date() указывает метку времени. Если опущено, будут использоваться текущая дата и время (как в примерах выше).
PHP функция mktime() возвращает метку времени Unix для даты. Временная метка Unix содержит количество секунд между эпохой Unix (1 января 1970 г. 00:00:00 по Гринвичу) и указанным временем.
Синтаксис
В приведенном ниже примере создается дата и время с помощью функции date() из ряда параметров в функции mktime() :
Пример
Создать дату из строки с помощью strtotime()
PHP функция strtotime() используется для преобразования удобочитаемой строки даты в метку времени Unix (количество секунд с 1 января 1970 года 00:00:00 по Гринвичу).
Синтаксис
В приведенном ниже примере создается дата и время из функции strtotime() :
Пример
PHP довольно умен для преобразования строки в дату, поэтому вы можете ввести различные значения:
Пример
Однако strtotime() не идеален, поэтому не забудьте проверить строки, которые вы там вставили.
Больше примеров даты
В приведенном ниже примере выводятся даты следующих шести суббот:
Пример
В приведенном ниже примере показано количество дней до 4 июля:
Пример
Полный справочник PHP дат
Для более полного ознакомления со всеми функциями даты, перейдите на наш Полный справочник PHP Дат.
Справочник содержит краткое описание и примеры использования для каждой функции!
PHP Упражнения
ПАЛИТРА ЦВЕТОВ
ПРИСОЕДИНЯЙТЕСЬ!
Получите ваш
Сертификат сегодня!
Связь с админом
Если вы хотите сообщить об ошибке, а также внести предложение о работе сайта, добавить объявление или рекламу на сайт, не стесняйтесь отправить админу электронное письмо на email:
Топ Учебники
Топ Справочники
Топ Примеры
Веб Сертификаты
Этот сайт оптимизирован для обучения и тестирования. Примеры могут быть упрощены для улучшения чтения и базового понимания. Учебные пособия, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность и работоспособность всего контента. Используя этот сайт, вы соглашаетесь с тем, что прочитали и приняли условия использования, cookie и политику конфиденциальности.
Также вы можете абсолютно бесплатно скачать офлайн версию сайта W3Schools на русском архивом с GitHub и пользоваться локально на своём компьютере.
Также доступна версия сайта W3Schools на украинском языке.
Copyright 1999-2021 by Refsnes Data. All Rights Reserved.
Сайт работает на фреймворке W3.CSS.
Php преобразовать строку в дату по формату
(PHP 4, PHP 5, PHP 7, PHP 8)
date — Форматирует вывод системной даты/времени
Описание
Список параметров
Возвращаемые значения
Ошибки
Список изменений
Версия | Описание |
---|---|
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’ );
/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: Mon, 15 Aug 2005 15:12:46 UTC
echo date ( DATE_RFC822 );
Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.
Пример #2 Экранирование символов в функции date()
Пример #3 Пример совместного использования функций date() и mktime()
Данный способ более надёжен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.
Пример #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)
?>
Примечания
Смотрите также
User Contributed Notes 20 notes
Things to be aware of when using week numbers with years.
Conclusion:
if using ‘W’ for the week number use ‘o’ for the year.
In order to define leap year you must considre not only that year can be divide by 4!
The correct alghoritm is:
if (year is not divisible by 4) then (it is a common year)
else if (year is not divisible by 100) then (it is a leap year)
else if (year is not divisible by 400) then (it is a common year)
else (it is a leap year)
So the code should look like this:
For Microseconds, we can get by following:
echo date(‘Ymd His’.substr((string)microtime(), 1, 8).’ e’);
FYI: there’s a list of constants with predefined formats on the DateTime object, for example instead of outputting ISO 8601 dates with:
echo date ( ‘Y-m-d\TH:i:sO’ );
?>
You can use
echo date ( DateTime :: ISO8601 );
?>
instead, which is much easier to read.
this how you make an HTML5 tag correctly
It’s common for us to overthink the complexity of date/time calculations and underthink the power and flexibility of PHP’s built-in functions. Consider http://php.net/manual/en/function.date.php#108613
date() will format a time-zone agnostic timestamp according to the default timezone set with date_default_timezone_set(. ). Local time. If you want to output as UTC time use:
$tz = date_default_timezone_get ();
date_default_timezone_set ( ‘UTC’ );
For HTML5 datetime-local HTML input controls (http://www.w3.org/TR/html-markup/input.datetime-local.html) use format example: 1996-12-19T16:39:57
To generate this, escape the ‘T’, as shown below:
If timestamp is a string, date converts it to an integer in a possibly unexpected way:
The example below formats today’s date in three different ways:
The following function will return the date (on the Gregorian calendar) for Orthodox Easter (Pascha). Note that incorrect results will be returned for years less than 1601 or greater than 2399. This is because the Julian calendar (from which the Easter date is calculated) deviates from the Gregorian by one day for each century-year that is NOT a leap-year, i.e. the century is divisible by 4 but not by 10. (In the old Julian reckoning, EVERY 4th year was a leap-year.)
This algorithm was first proposed by the mathematician/physicist Gauss. Its complexity derives from the fact that the calculation is based on a combination of solar and lunar calendars.
At least in PHP 5.5.38 date(‘j.n.Y’, 2222222222) gives a result of 2.6.2040.
So date is not longer limited to the minimum and maximum values for a 32-bit signed integer as timestamp.
Prior to PHP 5.6.23, Relative Formats for the start of the week aligned with PHP’s (0=Sunday,6=Saturday). Since 5.6.23, Relative Formats for the start of the week align with ISO-8601 (1=Monday,7=Sunday). (http://php.net/manual/en/datetime.formats.relative.php)
This can produce different, and seemingly incorrect, results depending on your PHP version and your choice of ‘w’ or ‘N’ for the Numeric representation of the day of the week:
Prior to PHP 5.6.23, this results in:
Today is Sun 2 Oct 2016, day 0 of this week. Day 1 of next week is 10 Oct 2016
Today is Sun 2 Oct 2016, day 7 of this week. Day 1 of next week is 10 Oct 2016
Since PHP 5.6.23, this results in:
Today is Sun 2 Oct 2016, day 0 of this week. Day 1 of next week is 03 Oct 2016
Today is Sun 2 Oct 2016, day 7 of this week. Day 1 of next week is 03 Oct 2016
I’ve tested it pretty strenuously but date arithmetic is complicated and there’s always the possibility I missed something, so please feel free to check my math.
The function could certainly be made much more powerful, to allow you to set different days to be ignored (e.g. «skip all Fridays and Saturdays but include Sundays») or to set up dates that should always be skipped (e.g. «skip July 4th in any year, skip the first Monday in September in any year»). But that’s a project for another time.
$start = strtotime ( «1 January 2010» );
$end = strtotime ( «13 December 2010» );
// Add as many holidays as desired.
$holidays = array();
$holidays [] = «4 July 2010» ; // Falls on a Sunday; doesn’t affect count
$holidays [] = «6 September 2010» ; // Falls on a Monday; reduces count by one
?>
Or, if you just want to know how many work days there are in any given year, here’s a quick function for that one:
Работа с датой и временем в PHP
Среди разнообразных задач программирования, различные манипуляции со значениями даты и времени встречаются достаточно часто. Редкая автоматизированная система, база данных может обойтись без сохранения информации о времени того или иного процесса. Помимо простейшего добавления даты в запись базы данных или отображения этой даты, встречаются множество задач вывода этих дат в различном виде, проверки соответствия текущего времени с заданным таймером, вычисление срока между двумя датами и многое другое.
Для удобства работы с датами каждый язык программирования имеет свои специальные типы данных для хранения значения даты и времени. Чаще всего это числовое значение, либо целое, либо с плавающей точкой.
В PHP работа с датой чаще всего сталкивается с UNIX TIMESTAMP. Здесь время хранится целым числом. Исчисление времени начинается с 1 января 1970 года. Поэтому, например, дата и время 11.12.2014 19:40:00, будет представлено числом 1418316000. Эта цифра показывает, сколько секунд прошло с нулевой даты 1 января 1970 года, названой Эпохой Unix.
Пример php-страницы, предоставляющий возможности преобразования данных представлен на сайте в разделе программ программой «Преобразование формата даты и времени». Здесь можно сформировать нужную дату в формат UNIX TIMESTAMP, а так же привести этот формат в стандартный, понятный человеку вид.
Получение текущего времени и даты в PHP
Для получения текущего времени сервера используется функция
которая как раз вернет значение в формате unix timestamp.
На первый взгляд не очень удобный формат для человека, но, как известно, чем проще представление данных, тем быстрее выполняется обработка этих значений компьютером. Кроме того, хранение числа в базе данных намного экономичнее, чем какой-либо специальный формат. Так же, PHP работает со временем одинаково и на Unix и на Windows платформе, что обеспечивает возможность использовать код на любой из этих платформ.
Преобразование формата даты и времени в PHP
Простейший механизм, позволяющий преобразовать числовое значение даты на более понятные значения, предоставляется функцией:
Она возвращает ассоциативный массив, содержащий информацию о дате. Если параметр timestamp не указан, будут возвращены сведения о текущем времени. Этот массив содержит следующие значения:
seconds | секунды (0-59) |
minutes | минуты (0-59) |
hours | часы (0-23) |
mday | день месяца (1-31) |
wday | день недели (0-6), начиная с воскресенья |
mon | месяц (1-12) |
year | год |
yday | день года (0-365) |
weekday | название дня недели (например, Monday) |
month | название месяца (например, January) |
0 | количество секунд, прошедших с начала Эпохи Unix |
Полученный массив, позволяет вывести значения нужном виде:
Так же для преобразования формата даты и времени можно воспользоваться функцией:
Формат задается следующими значениями:
Как видно из списка, с помощью этой функции можно получить очень много полезных данных о дате. Например:
Другие символы, входящие в шаблон, будут выведены в строке как есть. Если же потребуется ввести символ, который используется в функции как код формата, перед ними вставляется символ «\». Для значения «\n» (символ перехода на новую строку), следует указать «\\n». Таким образом, можно делать вывод целого сообщения, содержащего сведения о дате и времени:
Преобразование даты и времени в формат timestamp
Для обратного преобразования даты из стандартного формата в числовое значение timestamp применяется функция:
Функция mktime() возвращает значение времени Unix, соответствующую дате и времени, заданным аргументами. Например:
Следует внимательно относится к порядку аргументов функции: часы, минуты, секунды, месяц, день, год.
Кроме простого формирования значения даты в timestamp, функцию mktime() можно использовать для арифметически вычисления с датами. Для этого просто можно ввести необходимые аргументы. Например, если указать 14 месяц, то в итоговом значении, месяц будет 2-й, а значение года увеличится на единицу:
Аналогично можно поступать и с другими параметрами.
Проверка корректности даты в PHP
При работе с датами, особенно при формировании даты предложенной выше функцией mktime() необходимо учитывать корректность вводимой даты. Для этого в PHP используется функция:
Возвращает true если дата, заданная аргументами, является правильной; иначе возвращает false. Дата считается правильной, если:
— год в диапазоне от 1 до 32767;
— месяц в диапазоне от 1 до 12;
— день для заданного месяца с учетом високосного года указаны правильно.