idate
Преобразует текущую дату и время в целое число в соответствии со строкой форматирования format . Если аргумент timestamp задан, расчёт будет произведён для этой временной метки, если нет — будет использовано локальное время. Другими словами, timestamp — необязательный аргумент и по умолчанию равен значению time() .
В отличие от функции date() , idate() принимает только один символ в аргументе format .
Список параметров
| символ в format | Описание |
|---|---|
| B | Эталонное время/Время Интернета |
| d | День месяца |
| h | Час (12 часовой формат) |
| H | Час (24 часовой формат) |
| i | Минуты |
| I (i в верхнем регистре) | возвращает 1 , если активировано DST, или 0 в противном случае |
| L (l в верхнем регистре) | возвращает 1 для високосного года, 0 в противном случае |
| m | Номер месяца |
| N | День недели в ISO-8601 (с 1 для понедельника по 7 для воскресенья) |
| o | Год в ISO-8601 (4 цифры) |
| s | Секунды |
| t | Количество дней в текущем месяце |
| U | Время в секундах, от начала эпохи UNIX — 1 января 1970 00:00:00 UTC — то же, что time() |
| w | День недели ( 0 — Воскресенье) |
| W | ISO-8601 — Номер недели года, неделя начинается с понедельника |
| y | Год (1 или 2 цифры — смотрите примечание ниже) |
| Y | Год (4 цифры) |
| z | День года |
| Z | Часовой пояс — смещение в секундах |
Необязательный параметр timestamp представляет собой метку времени типа int , по умолчанию равную текущему локальному времени, если timestamp не указан или null . Другими словами, значение по умолчанию равно результату функции time() .
Возвращаемые значения
Возвращает целое число ( int ) в случае успешного выполнения или false в случае возникновения ошибки.
idate() всегда возвращает тип int и не может начинаться с нуля, поэтому idate() может вернуть меньше цифр, чем вы ожидаете. Смотрите примеры ниже.
Ошибки
Каждый вызов к функциям даты/времени при неправильных настройках часового пояса сгенерирует ошибку уровня E_WARNING , если часовой пояс некорректный. Смотрите также date_default_timezone_set()
Список изменений
| Версия | Описание |
|---|---|
| 8.2.0 | Добавлены символы для параметра format: N (День недели в ISO-8601) и o (Год в ISO-8601). |
| 8.0.0 | timestamp теперь допускает значение null. |
Примеры
Пример #1 Пример использования idate()
$timestamp = strtotime ( ‘1st January 2004’ ); //1072915200
?php
// это выведет год в 2-х знаковом представлении
// поскольку первая цифра «0», будет выведено
// только «4»
echo idate ( ‘y’ , $timestamp );
?>
Смотрите также
- DateTimeInterface::format() — Возвращает дату, отформатированную согласно переданному формату
- date() — Форматирует временную метку Unix
- getdate() — Возвращает информацию о дате/времени
- time() — Возвращает текущую метку системного времени Unix
User Contributed Notes
There are no user contributed notes for this page.
- Функции даты и времени
- 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
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
strtotime
Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени Unix (количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC) относительно метки времени, переданной в baseTimestamp , или текущего времени, если аргумент baseTimestamp опущен. Разбор строки даты определён в разделе Форматы даты и времени и содержит несколько аспектов. Настоятельно рекомендуется с ними ознакомиться.
Внимание
Временная метка Unix, которую возвращает эта функция, не содержит информацию о часовых поясах. Для выполнения расчётов с информацией о дате/времени вы должны использовать более подходящий DateTimeImmutable .
Каждый параметр функции использует временную метку по умолчанию, пока она не указана в этом параметре напрямую. Будьте внимательны и не используйте различные временные метки в параметрах, если на то нет прямой необходимости. Обратите внимание на date_default_timezone_get() для задания часового пояса различными способами.
Список параметров
Строка даты/времени. Объяснение корректных форматов дано в разделе Форматы даты и времени.
Временная метка, используемая в качестве базы для вычисления относительных дат.
Возвращаемые значения
Возвращает временную метку в случае успешного выполнения, иначе возвращается false .
Ошибки
Каждый вызов к функциям даты/времени при неправильных настройках часового пояса сгенерирует ошибку уровня E_WARNING , если часовой пояс некорректный. Смотрите также date_default_timezone_set()
Список изменений
Версия Описание 8.0.0 baseTimestamp теперь допускает значение null. Примеры
Пример #1 Пример использования функции strtotime()
echo strtotime ( «now» ), «\n» ;
echo strtotime ( «10 September 2000» ), «\n» ;
echo strtotime ( «+1 day» ), «\n» ;
echo strtotime ( «+1 week» ), «\n» ;
echo strtotime ( «+1 week 2 days 4 hours 2 seconds» ), «\n» ;
echo strtotime ( «next Thursday» ), «\n» ;
echo strtotime ( «last Monday» ), «\n» ;
?>?phpПример #2 Проверка ошибок
if (( $timestamp = strtotime ( $str )) === false ) echo «Строка ( $str ) недопустима» ;
> else echo » $str = color: #007700″>. date ( ‘l dS \o\f F Y h:i:s A’ , $timestamp );
>
?>Примечания
Замечание:
«Относительная» дата в данном случае также означает, что если конкретный компонент метки даты/времени не указан, он будет взят дословно из параметр baseTimestamp . То есть, strtotime(‘February’) , если его запустить 31 мая 2022 года, будет интерпретирован как 31 февраля 2022 , что перенесётся в метку времени 3 марта (в високосный год будет 2 марта ). Использование strtotime(‘1 February’) или strtotime(‘first day of February’) позволит избежать этой проблемы.
Замечание:
Если количество лет указано двумя цифрами, то значения 00-69 будут считаться 2000-2069, а 70-99 — 1970-1999. Смотрите также замечания ниже о возможных различиях на 32-битных системах (допустимые даты заканчиваются 2038-01-19 03:14:07).
Замечание:
Корректным диапазоном временных меток обычно являются даты с 13 декабря 1901 20:45:54 UTC по 19 января 2038 03:14:07 UTC. (Эти даты соответствуют минимальному и максимальному значению 32-битового знакового целого).
В 64-битных версиях PHP корректный диапазон временных меток фактически бесконечен, так как 64 битов хватит для представления приблизительно 293 миллиарда лет в обоих направлениях.
Замечание:
Не рекомендуется использовать эту функцию для математических операций. Целесообразно использовать DateTime::add() и DateTime::sub() .
Смотрите также
- DateTimeImmutable
- DateTimeImmutable::createFromFormat() — Разбирает строку с датой согласно указанному формату
- Форматы даты и времени
- checkdate() — Проверяет корректность даты по григорианскому календарю
- strptime() — Разбирает строку даты/времени, сгенерированную функцией strftime
User Contributed Notes 4 notes
5 months ago
This is the link to the relative formats that can be used in this function. It’s not easy to find in the documentation.
Here some examples:
$today = date ( ‘Y-m-d’ , strtotime ( ‘today’ ) );
echo «Today: » . $today ;// Print: Today: 2023-06-01
//Basic Example
$tomorrow = date ( ‘Y-m-d’ , strtotime ( ‘tomorrow’ ) );
echo «\n\nTomorrow: » . $tomorrow ;// Print: Tomorrow: 2023-06-02
$yesterday = date ( ‘Y-m-d’ , strtotime ( ‘yesterday’ ) );
echo «\n\nYesterday: » . $yesterday ;// Print: Yesterday: 2023-05-31
// Add o subtract Month
$variable = date ( ‘Y-m-d’ , strtotime ( ‘+1 month’ ) );
echo «\n\nAdd one month: » . $variable ;// Print: Add one month: 2023-07-01
$variable = date ( ‘Y-m-d’ , strtotime ( ‘-1 month’ ) );
echo «\n\nSubstract one month: » . $variable ;// Print: Substract one month: 2023-05-01
// More complex formats:
// ERROR / BUG: If today is the last day of the month. This examples can be one error or bug.
// If you are looking el first day of previous or next month you dont must use last Relative Format.
// You must use ‘first day of 2 months ago’ or ‘first day of previous month’
// See you:
// https://bugs.php.net/bug.php?id=22486
// https://bugs.php.net/bug.php?id=44073
// strtotime(«+1 Month»)
// produces the wrong result on the 31st day of the month.
// on January 31, date(«m»,strtotime(«+1 Month»)) will return 03 instead of 02// Another example:
$dt1 = strtotime ( «2023-01-30» );
$month = strtotime ( «+1 month» , $dt1 );
echo «\n\nToday is: » . date ( ‘Y-m-d’ , $dt1 );
echo «\nBUG add month: » . date ( «Y-m-d» , $month );// Print:
// Today is: 2023-01-30
// BUG add month: 2023-03-02$dt1 = strtotime ( «2023-02-28» );
$month = strtotime ( «-1 month» , $dt1 );
echo «\n\nToday is: » . date ( ‘Y-m-d’ , $dt1 );
echo «\nBUG substract month: » . date ( «Y-m-d» , $month );// Print:
// Today is: 2023-02-28
// BUG substract month: 2023-01-28$dt1 = strtotime ( «2023-01-30» );
$month = strtotime ( «first day of next month» , $dt1 );
echo «\n\nToday is: » . date ( ‘Y-m-d’ , $dt1 );
echo «\nFirst day of next month: » . date ( «Y-m-d» , $month );// Print:
// Today is: 2023-01-30
// First day of next month: 2023-02-01$dt1 = strtotime ( «2023-02-28» );
$month = strtotime ( «last day of last month» , $dt1 );
echo «\n\nToday is: » . date ( ‘Y-m-d’ , $dt1 );
echo «\nLast day of last month: » . date ( «Y-m-d» , $month );// Print:
// Today is: 2023-02-28
// Last day of last month: 2023-01-31$dt1 = strtotime ( «2023-02-28» );
$month = strtotime ( «first day of 2 months ago» , $dt1 );
echo «\n\nToday is: » . date ( ‘Y-m-d’ , $dt1 );
echo «\nFirst day of 2 months ago: » . date ( «Y-m-d» , $month );// Print:
// Today is: 2023-02-28
// First day of 2 months ago: 2022-12-018 months ago
Be careful when using two numbers as the year. I came across this situation:
echo strtotime ( ‘24.11.22’ );
echo date ( ‘d.m.Y H:i:s’ , 1669324282 ) . «\n\n» ;// But
echo strtotime ( ‘24.11.2022’ );
echo date ( ‘d.m.Y H:i:s’ , 1669237200 );5 months ago
Be aware of this: 1 month before the 31st day, it will return the same month:
echo date ( ‘m’ , strtotime ( ‘2023-05-30 -1 month’ )) ; //returns 04
echo date ( ‘m’ , strtotime ( ‘2023-05-31 -1 month’ )) ; //returns 05, not 04
?>So, don’t use this to operate on the month of the result.
A better way to know what month was the previous month would be://considering today is 2023-05-31.
$firstOfThisMonth = date ( ‘Y-m’ ) . ‘-01’ ; //returns 2023-05-01
echo date ( ‘m’ , strtotime ( $firstOfThisMonth . ‘ -1 month’ )) ; //returns 04
?>6 months ago
Note:
If day of month is 12 or less, or year is entered as a two digit number and less than 31 or 12 then you may get the wrong time value.
If you know the format used with the date string, then use the following code: (PHP version 5.5 or later)
[code]
function getStrtotime($timeDateStr, $formatOfStr=»j/m/Y») // Same as strtotime() but using the format $formatOfStr.
// Works with PHP version 5.5 and later.
// On error reading the time string, returns a date that never existed. 3/09/1752 Julian/Gregorian calendar switch.
$timeStamp = DateTimeImmutable::createFromFormat($formatOfStr,$timeDateStr);
if($timeStamp===false) // Bad date string or format string.
return -6858133619; // 3/09/1752
> else // Date string and format ok.
return $timeStamp->format(«U»); // UNIX timestamp from 1/01/1970, 0:00:00 gmt
>
>print date(«j/m/Y», getStrtotime(«1/02/2022», «j/m/Y»)).» Standard format. (j)\n»;
print date(«j/m/Y», getStrtotime(«1/02/2022», «d/m/Y»)).» Standard format. (d)\n»;
print date(«j/m/Y», getStrtotime(«1/02/2022», «j/m/y»)).» Standard format. (y) <— Bad date as 2022 is not two digits.\n»;
print date(«j/m/Y», getStrtotime(«21/02/2022», «j/m/Y»)).» Standard format. (j)\n»;
print date(«j/m/Y», getStrtotime(«21/02/2022», «d/m/Y»)).» Standard format. (d)\n»;
print date(«j/m/Y», getStrtotime(«2/01/2022», «m/j/Y»)).» US format.\n»;
print date(«j/m/Y», getStrtotime(«2-01-22», «m-j-y»)).» Two digit year, US format. (Y)\n»;
print date(«j/m/Y», getStrtotime(«2-01-22», «m-j-Y»)).» Two digit year, US format. (y) <— Wrong year if two digits.\n»;
print date(«j/m/Y», getStrtotime(«3/09/1752», «j/m/Y»)).» No such date.\n»;
print date(«j/m/Y», getStrtotime(«50/00/19999», «j/m/Y»)).» Bad date string.\n»;
print date(«j/m/Y», getStrtotime(«1-02-2022», «j/m/Y»)).» Wrong — or / used.\n»;
[/code]
Output:
1/02/2022 Standard format. (j)
1/02/2022 Standard format. (d)
3/09/1752 Standard format. (y) 21/02/2022 Standard format. (j)
21/02/2022 Standard format. (d)
1/02/2022 US format.
1/02/2022 Two digit year, US format. (Y)
1/02/0022 Two digit year, US format. (y) 3/09/1752 No such date.
3/09/1752 Bad date string.
3/09/1752 Wrong — or / used.- Функции даты и времени
- 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
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Как преобразовать дату в секунды и наоборот на PHP?
Кто еще не знает, что такое Unix, напомню, что это временная метка (дата) в секундах. В разных ваших идеях может потребоваться представить дату в виде секунд или наоборот. Я покажу, как это можно сделать на PHP.
Предположим, что вы имеете дату «12.10.2017». Воспользовавшись функцией «strtotime», преобразуем ее в секунды:
Но дата не всегда может быть в таком формате, а может содержать, например, час и минуты:
«strtotime» учтет и это.
Теперь сделаем обратное действие и из секунд получим некую дату:
Нужный вам формат итоговой даты вы задаете сами. Более подробно об этом расписано здесь.
Преобразовать дату в секунды (PHP)
Дату иногда очень удобно преобразовывать в количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT). Преобразование производится функцией int strtotime ( string time [, int now]) .
‘; // 1325275200 $date = ‘2005-11-30’; echo strtotime($date) . ‘
‘; // 1133298000 ?>?php>
В качестве параметра time можно передавать такие варианты даты как: last Week, last Year, +1 day и т.д.
✖ ❤ Мне помогла статья 1 оценка
16683 просмотра нет комментариев chepro 07 февраля 2012Категории
Читайте также
- Количество секунд от начала дня (PHP)
- Посчитать сколько времени прошло (PHP)
- Секунды в дни-часы-минуты (PHP)
- Количество секунд между датами (PHP)
- Название предыдущего месяца (PHP)
- Дата вчера сегодня завтра (PHP)
- Конвертировать миллисекунды в time.Time (GoLang)
- Как получить TIMESTAMP дня текущей недели (PHP)
- Количество минут между датами (PHP)
- Количество дней между датами (PHP)
- Количество часов между датами (PHP)
- Установить часовой пояс (PHP)
Комментарии
Написать комментарий
© Экспэнч 2010-2023
При полном или частичном копировании статей сайта указывайте пожалуйста ссылку на источник
Хотите узнать больше информации, пишите на: artem@expange.ruВход на сайт
Введите данные указанные при регистрации:
Социальные сети
Вы можете быстро войти через социальные сети:
