- How to convert datetime in PHP to a Unix timestamp
- Overview
- Problems
- Converting datetime strings to a Unix timestamp
- The incorrect approach
- The correct approach
- What is the Unix timestamp?
- Code explanation
- Parse date to timestamp php
- PHP String Based
- PHP Class Based
- PHP JSON Based
- PHP File Systems Based
- strtotime
- Список параметров
- Возвращаемые значения
- Ошибки
- Список изменений
- Примеры
- Примечания
- Смотрите также
- Convert a Date to a Timestamp in PHP
- Use strtotime() Function to Convert a Date to a Timestamp in PHP
- Use strptime() Function to Convert a Date to a Timestamp in PHP
How to convert datetime in PHP to a Unix timestamp
Many candidates are rejected or down-leveled due to poor performance in their System Design Interview. Stand out in System Design Interviews and get hired in 2023 with this popular free course.
Overview
While working with the MySQL database in PHP, we may need to record the time instance at which an event occurs. This instance can be stored as a table record. We can the instance as a table record by using the datetime or timestamp MySQL data types. The problem associated with this procedure is that it cannot display the date in a very human-friendly and easily-readable format.
We get the following from the datetime and timestamp MySQL table columns:
But we may want to display the date in the format shown in the image below:
This shot teaches us how to display a date in this format, as a PHP script.
Before we learn to display the date in the aforementioned format, let’s look at the problems associated with MySQL table timestamp columns.
Problems
- The datetime from the table is a string.
- It comes from the database table column of type timestamp , which usually presents datetime in the format 2021-11-17 13:02:18 .
- This format is not a Unix timestamp. We’ll need to convert the format to a Unix timestamp in order to get the date in the format shown in image above.
Converting datetime strings to a Unix timestamp
A combination of two PHP functions, the strtotime() and the date() functions, will produce an output like the one shown in the image above.
- The strtotime() function converts any given date string into a Unix timestamp. It only accepts the date string as a parameter.
- The date() function outputs the current time, or the time relative to the provided timestamp (if any), in the specified format. It takes the format we wish to display the date in and the optional timestamp as its two parameters.
Now, we will delve into some code examples.
The incorrect approach
The code below is an incorrect way of trying to get the output we’ve shown above, which may be our first approach while trying out solutions to that problem for the first time.
The output is not what we want, and that is because we didn’t convert the timestamp into a proper Unix timestamp before passing it to the date() function.
$mytimestamp = '2021-11-17 13:02:18';// $dating = intval($mytimestamp);// echo $dating;$converted = date('m d, Y',$mytimestamp);echo $converted;?>of a specific value fetched from the database in the provided code,##
The correct approach
In this second code, we use the strtotime() function to convert the datetime string from a database table into a Unix timestamp. Then, with the help of the date() function, we set the timestamp to various date formats of our choice.
What is the Unix timestamp?
This is the number of seconds since the Unix epoch time (01-01-1970) .
For more tips on the PHP date() function, we can see this post.
Note: The escape character is used in the code snippet below to escape the words that are just used as text, so that they are not given special interpretation by the function.
Code explanation
In the code below, a datetime string, saved in the variable $d , is converted to a Unix timestamp with the strtotime() function. It is then saved to the variable $ad on line 5.
Note: To use the current date and time instead of a specific value fetched from the database in the provided code, comment out $d = ‘2021-11-17 13:02:18’; with // and uncomment $d = date(‘Y-m-d H:i:s’); in the provided code, it will assign the current datetime to the variable $d .
Parse date to timestamp php
- How to get the current Date and Time in PHP ?
- PHP program to change date format
- How to convert DateTime to String using PHP ?
- How to get Time Difference in Minutes in PHP ?
- Return all dates between two dates in an array in PHP
- Sort an array of dates in PHP
- How to get the time of the last modification of the current page in PHP?
- How to convert a Date into Timestamp using PHP ?
- How to add 24 hours to a unix timestamp in php?
- Sort a multidimensional array by date element in PHP
- Convert timestamp to readable date/time in PHP
- PHP | Number of week days between two dates
- PHP | Converting string to Date and DateTime
- How to get last day of a month from date in PHP ?
PHP String Based
- PHP | Change strings in an array to uppercase
- How to convert first character of all the words uppercase using PHP ?
- How to get the last character of a string in PHP ?
- How to convert uppercase string to lowercase using PHP ?
- How to extract Numbers From a String in PHP ?
- How to replace String in PHP ?
- How to Encrypt and Decrypt a PHP String ?
- How to display string values within a table using PHP ?
- How to write Multi-Line Strings in PHP ?
- How to check if a String Contains a Substring in PHP ?
- How to append a string in PHP ?
- How to remove white spaces only beginning/end of a string using PHP ?
- How to Remove Special Character from String in PHP ?
- How to create a string by joining the array elements using PHP ?
- How to prepend a string in PHP ?
PHP Class Based
PHP JSON Based
PHP File Systems Based
strtotime
Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени Unix (количество секунд, прошедших с 1 января 1970 г. 00:00:00 UTC) относительно метки времени, переданной в now , или текущего времени, если аргумент now опущен.
Каждый параметр функции использует временную метку по умолчанию, пока она не указана в этом параметре напрямую. Будьте внимательны и не используйте различные временные метки в параметрах, если на то нет прямой необходимости. Обратите внимание на date_default_timezone_get() для задания временной зоны различными способами.
Список параметров
Строка даты/времени. Объяснение корректных форматов дано в Форматы даты и времени.
Временная метка, используемая в качестве базы для вычисления относительных дат.
Возвращаемые значения
Возвращает временную метку в случае успеха, иначе возвращается FALSE . До версии PHP 5.1.0 в случае ошибки эта функция возвращала -1.
Ошибки
Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE , и/или ошибку уровня E_STRICT или E_WARNING при использовании системных настроек или переменной окружения TZ . Смотрите также date_default_timezone_set()
Список изменений
Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE .
Примеры
Пример #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 Проверка ошибок
// до версии PHP 5.1.0 вместо false необходимо было сравнивать со значением -1
if (( $timestamp = strtotime ( $str )) === false ) echo «Строка ( $str ) недопустима» ;
> else echo » $str == » . date ( ‘l dS \o\f F Y h:i:s A’ , $timestamp );
>
?>Примечания
Замечание:
Если количество лет указано двумя цифрами, то значения 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-битового знакового целого).
До версии PHP 5.1.0, не все платформы поддерживают отрицательные метки времени, поэтому поддерживаемый диапазон дат может быть ограничен Эпохой Unix. Это означает, что даты ранее 1 января 1970 г. не будут работать в Windows, некоторых дистрибутивах Linux и нескольких других операционных системах.
В 64-битных версиях PHP корректный диапазон временных меток фактически бесконечен, так как 64 битов хватит для представления приблизительно 293 миллиарда лет в обоих направлениях.
Замечание:
Даты в формате m/d/y или d-m-y разрешают неоднозначность с помощью анализа разделителей их элементов: если разделителем является слеш (/), то дата интерпретируется в американском формате m/d/y, если же разделителем является дефис (—) или точка (.), то подразумевается использование европейского форматаd-m-y.
Чтобы избежать потенциальной неоднозначности, рекомендуется использовать даты в формате стандарта ISO 8601 (YYYY-MM-DD) либо пользоваться функцией DateTime::createFromFormat() там, где это возможно.
Замечание:
Не рекомендуется использовать эту функцию для математических операций. Целесообразней использовать DateTime::add() и DateTime::sub() начиная с PHP 5.3, или DateTime::modify() в PHP 5.2.
Смотрите также
- Форматы даты и времени
- DateTime::createFromFormat() — Создает и возвращает экземпляр класса DateTime, соответствующий заданному формату
- checkdate() — Проверяет корректность даты по григорианскому календарю
- strptime() — Разбирает строку даты/времени сгенерированную функцией strftime
Convert a Date to a Timestamp in PHP
- Use strtotime() Function to Convert a Date to a Timestamp in PHP
- Use strptime() Function to Convert a Date to a Timestamp in PHP
- Use getTimestamp() Function to Convert a Date to a Timestamp in PHP
- Use format() Function to Convert a Date to a Timestamp in PHP
In this article, we will introduce methods to convert a date to a timestamp in PHP.
- Using strtotime() function
- Using strptime() function
- Using getTimestamp() function
- Using format() function
Use strtotime() Function to Convert a Date to a Timestamp in PHP
The built-in function strtotime() converts a date to a Unix timestamp . A Unix timestamp is the total number of seconds calculated from the Unix epoch(January 1st, 1970). The correct syntax to use this function is as follows
strtotime($dateString,$timeNow);
This function has two parameters. $dateString is the date/time string that should comply with PHP valid format. It is a mandatory parameter. The other parameter $timeNow is optional, it is the timestamp that is used for calculating relative dates. The current time now is the default value if the second parameter is omitted.
php $timestamp = strtotime("23-04-2020"); echo "The timestamp is $timestamp."; ?>
The date here is in the format «d-m-Y» . We have only passed a single parameter as it will convert the date to a Unix timestamp .
The timestamp is 1587600000.
Use strptime() Function to Convert a Date to a Timestamp in PHP
This is another function to convert a date to a Unix timestamp . It does not convert the date directly to a timestamp . It returns an array that tells about the seconds, minutes, hours, and several other details. We can use these details to convert a date to a timestamp .
strptime($dateString, $format);
It has two mandatory parameters. $dateString is the date string and $format is the format to parse $dateString .
php $array = strptime('23-04-2020', '%d-%m-%Y'); $timestamp = mktime(0, 0, 0, $array['tm_mon']+1, $array['tm_mday'], $array['tm_year']+1900); echo "The timestamp is $timestamp."; ?>