php время минус время
Дата и время в PHP
В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д.
PHP-функции для работы с датой и временем
PHP содержит множество функций для работы с датой и временем. Наиболее употребимыми являются:
time() Возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX). getdate( ) Считывает информацию о дате и времени. Возвращает ассоциативный массив, содержащий информацию по заданному или по текущему (по умолчанию) времени. Массив содержит следующие элементы:
seconds | Секунды (0-59) |
minutes | Минуты (0-59) |
hours | Часы (0-23) |
mday | День месяца (1-31) |
wday | День недели (0-6), начиная с воскресенья |
mon | Месяц (1-12) |
year | Год |
yday | День года (0-365) |
weekday | Название дня недели (например, Friday) |
month | Название месяца (например, January) |
0 | Абсолютное время |
Пример 1
РЕЗУЛЬТАТ ПРИМЕРА 1:
seconds = 47
minutes = 33
hours = 22
mday = 18
wday = 6
mon = 9
year = 2021
yday = 260
weekday = Saturday
month = September
0 = 1631993627
Сегодня: 18.9.2021
date() Форматирование даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. Строка формата может содержать следующие коды:
Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту «\». Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку «n», то надо ввести «\\n», поскольку «\n» является символом новой строки.
Пример 2
РЕЗУЛЬТАТ ПРИМЕРА 2:
Сегодня 18.09.21 22:33
часы
минуты
секунды
месяц
день месяца
год
Пример 3
РЕЗУЛЬТАТ ПРИМЕРА 3:
22 January 1971, at 1.30 pm, Friday
Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать mktime() для годов до 1902, а также следует использовать ее осторожно для годов до 1970.
Пример 4
РЕЗУЛЬТАТ ПРИМЕРА 4:
Saturday 18 September 2021 22:33
Сегодня Saturday 18 September 2021 22:33:47
MSK
PHP вычесть час из даты
Я получаю дату в виде строчки: «09.03.2017 18:46». Как мне из нее вычесть час, чтобы получить такую строчку «09.03.2017 17:46»?
4 ответа 4
Есть простой вариант:
Можно воспользоваться Datetime и в частности его методом date_sub, который вычтет любой интервал в зависимости от переданного шаблона
Нужно завести привычку работать с датой/временем, как с датой и временем.
Иначе придётся учитывать кучу тонкостей.
Функция для вычитания интервала из даты: DateTime::sub
Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.
Связанные
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.9.17.40238
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
PHP занятие 6. Функции даты и времени
Функции даты и функции времени php
Функции даты и времени в PHP позволяют получить дату и время с сервера, с которого запускается сценарий.
Рассмотрим основные функции даты и функции времени php.
Функция date в php
Рассмотрим варианты символов, которые распознаются в параметре формат:
Символ в параметре format | Описание | Пример возвращаемого значения |
---|---|---|
Функция даты php | ||
День | ||
d | День месяца: две цифры с первым нулём | от 01 до 31 |
D | День недели в словесном представлении, 3 символа | от Mon до Sun |
j | День месяца без первого нуля | от 1 до 31 |
l (строчная «L») | Полное словесное название дня недели | от Sunday до Saturday |
N | Порядковый номер дня недели | от 1 (понедельник) до 7 (воскресенье) |
S | Сокращение порядкового числительного дня месяца: два символа | st, nd, rd или th. Применяется вместе с j |
w | Порядковый номер дня недели | от 0 (воскресенье) до 6 (суббота) |
z | Порядковый номер дня в году (начиная с 0) | От 0 до 365 |
Неделя | ||
W | Порядковый номер недели года: недели начинаются с понедельника | 33 (33-я неделя года) |
Месяц | ||
F | Полное словесное название месяца, например May | от January до December |
m | Порядковый номер месяца с первым нулём | от 01 до 12 |
M | Сокращенное словесное название месяца: три символа | от Jan до Dec |
n | Порядковый номер месяца без первого нуля | от 1 до 12 |
t | Количество дней в указанном месяце | от 28 до 31 |
Год | ||
L | Указывает на високосный год | 1, если год високосный, иначе 0. |
o | Номер года | 1999 или 2003 |
Y | Порядковый номер года: четыре цифры | 1998, 2008 |
y | Номер года: две цифры | 98, 08 |
Функции времени php | ||
a | Ante meridiem (с англ. «до полудня») или Post meridiem (с англ. «после полудня») | am или pm |
A | Ante meridiem или Post meridiem заглавными буквами | AM или PM |
B | Время в формате Интернет-времени | от 000 до 999 |
g | Часы в 12-часовом формате без первого нуля | от 1 до 12 |
G | Часы в 24-часовом формате без первого нуля | от 0 до 23 |
h | Часы в 12-часовом формате с первым нулём | от 01 до 12 |
H | Часы в 24-часовом формате с первым нулём | от 00 до 23 |
i | Минуты с первым нулём | от 00 до 59 |
s | Секунды с первым нулём | от 00 до 59 |
u | Микросекунды | Например, 654321 |
v | Миллисекунды | Например, 654 |
Временная зона | ||
e | Код шкалы временной зоны | Например, UTC, GMT |
I (заглавная i) | Признак летнего времени | 1, если дата соответствует летнему времени, 0 в противном случае. |
Полная дата/время | ||
c | Дата в формате, указанном в примере | 2006-05-12T15:19:21+00:00 |
r | Дата в формате, указанном в примере | Например: Thu, 23 Dec 2010 18:05:07 +0200 |
U | Количество секунд, прошедших с начала Эпохи Unix (с 1 января 1970 00:00:00 GMT) | — |
Пример:
// выведет день недели в формате: Saturday echo date(«l»); // выведет дату в формате 2017-01-28 echo date(‘Y-m-d’); // выведет дату и время в формате: Saturday 8th of August 2016 06:13:44 PM echo date(‘l jS \of F Y h:i:s A’);
Функция time и mktime в php
time — возвращает количество секунд, прошедших с начала Эпохи Unix (c 1 января 1970 00:00:00 GMT) до текущего времени
Функция не предназначена для вывода результата в виде даты или времени, а используется совместно с другими функциями.
Пример использования функции в «чистом виде»:
Функция используется совместно с функцией date():
Выполнение:
Функция используется совместно с функцией mktime:
mktime — возвращает метку времени Unix для указанной даты
Аргументы:
Аргументы могут быть опущены в порядке справа налево.
Рис. 6.1. Использование функции mktime и date
Выполнение:
Дополните код:
Использование функций даты и времени
Напоминание:
Time() – возвращает текущее время
Date(format,время) – возвращает время, заданного вторым параметром в указанном формате:
Функция getdate в php
Функция getdate возвращает информацию о дате и/или времени
Индексы ассоциативного массива:
Php время минус время
(PHP 4, PHP 5, PHP 7, PHP 8)
time — Возвращает текущую метку системного времени Unix
Описание
Возвращает количество секунд, прошедших с начала эпохи Unix (1 января 1970 00:00:00 GMT) до текущего времени.
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Возвращает текущую метку системного времени.
Примеры
Пример #1 Пример использования time()
Результатом выполнения данного примера будет что-то подобное:
Примечания
Смотрите также
User Contributed Notes 21 notes
The documentation should have this info. The function time() returns always timestamp that is timezone independent (=UTC).
Two quick approaches to getting the time elapsed in human readable form.
$nowtime = time ();
$oldtime = 1335939007 ;
/** Output:
time_elapsed_A: 6d 15h 48m 19s
time_elapsed_B: 6 days 15 hours 48 minutes and 19 seconds ago.
**/
?>
A time difference function that outputs the time passed in facebook’s style: 1 day ago, or 4 months ago. I took andrew dot macrobert at gmail dot com function and tweaked it a bit. On a strict enviroment it was throwing errors, plus I needed it to calculate the difference in time between a past date and a future date.
Argument order (begin date, end date) doesn’t matter.
I needed to convert between Unix timestamps and Windows/AD timestamps, so I wrote a pair of simple functions for it.
Below, a function to create TNG-style stardates, taking 2009 to start stardate 41000.0. In fact, the offset is trivial to adjust if you wish to begin from a different date.
Here’s a snippet of code that demonstrates the difference:
// Find the next second
$nextSecond = time () + 1 ;
// TIME: 1525735820 uTIME: 1525735820.997716
// TIME: 1525735820 uTIME: 1525735820.998137
// TIME: 1525735820 uTIME: 1525735820.998528
// TIME: 1525735820 uTIME: 1525735820.998914
// TIME: 1525735820 uTIME: 1525735820.999287
// TIME: 1525735820 uTIME: 1525735820.999657
// TIME: 1525735820 uTIME: 1525735821.000026 time() is behind
// TIME: 1525735820 uTIME: 1525735821.000367 time() is behind
// TIME: 1525735820 uTIME: 1525735821.000705 time() is behind
// TIME: 1525735820 uTIME: 1525735821.001042 time() is behind
// TIME: 1525735820 uTIME: 1525735821.001379 time() is behind
// TIME: 1525735821 uTIME: 1525735821.001718
// TIME: 1525735821 uTIME: 1525735821.002070
// TIME: 1525735821 uTIME: 1525735821.002425
// TIME: 1525735821 uTIME: 1525735821.002770
// TIME: 1525735821 uTIME: 1525735821.003109
// TIME: 1525735821 uTIME: 1525735821.003448
// TIME: 1525735821 uTIME: 1525735821.003787
// TIME: 1525735821 uTIME: 1525735821.004125
// TIME: 1525735821 uTIME: 1525735821.004480
Here’s a little tweak for those having trouble with cookies being set in the future or past (even after setting the date.timezone directive in php.ini or using the function):
Does anyone know if the year 2038 issue will be solved in PHP?
Lets imagine it’s year 2039 and the time() function will return negative numbers? This is not acceptable.
Using the DateTime interface is nice, but will these timestamp helper functions be removed or fixed?
If you want to create a «rounded» time stamp, for example, to the nearest 15 minutes use this as a reference:
= 60 * 15 // 60 seconds per minute * 15 minutes equals 900 seconds
//$round_numerator = 60 * 60 or to the nearest hour
//$round_numerator = 60 * 60 * 24 or to the nearest day
//If it was 12:40 this would return the timestamp for 12:45;
//3:04, 3:00; etc.
?>
I built this function to get the strtotime numbers for the beginning and ending of the month and return them as arrays in an object. Cheers.
The issue are highlighting is with the date() function, not with time(). the following code demonstrates this:
A better way to get a nice time-format (1 year ago, 2 months until) without all the trailing months, days, hours, minutes, seconds in the result is by using the DateTime format and using the date_diff function as they both does most of the heavy lifting for you
Function below as example
// Ex. (time now = November 23 2017)
getTimeInterval ( «2016-05-04 12:00:00» ); // Returns: 1 year ago
getTimeInterval ( «2017-12-24 12:00:00» ); // Returns: 1 month until
I did an article on floating point time you can download from my website. Roun movements is the radial ounion movement and there is a quantum ounion movement as well, this code will generate the data for http://www.chronolabs.org.au/bin/roun-time-article.pdf which is an article on floating point time, I have created the calendar system as well for this time. It is compatible with other time and other solar systems with different revolutions of the planets as well as different quantumy stuff.
Here’s one way to generate all intermediate dates (in mySQL format) between any 2 dates.
Get start and end dates from user input, you’d need to do the basic validations that :
— start and end dates are valid dates
— start date //start date 2001-02-23
$sm = 2 ;
$sd = 23 ;
$sy = 2001 ;
//end date 2001-03-14
$em = 3 ;
$ed = 14 ;
$ey = 2001 ;
A method return GMT time (gmttime):
elapsed time function with precision:
Here is a version for the difference code that displays «ago» code.
It does use some precision after the time difference is longer than a day. ( ie days are more than 60 * 60 * 24 hours long )
// Make the entered date into Unix timestamp from MySQL datetime field
// Calculate the difference in seconds betweeen
// the two timestamps
Разница во времени в формате timestamp
Пытаюсь сделать таймер. Есть время окончания — 2015-05-13 17:00:00.
Нужно посчитать разницу между текущим временем и временем до окончания и запихнуть это всё в переменные:
чтоб в будущем эти переменные подставить в обратный таймер с JavaScript.
4 ответа 4
Буквальный ответ такой:
Но можно передать в JS просто метку времени, а не составляющие.
Нюанс в том, что Javascript работает с милисекундами, а PHP с секундами.
А уже в JS делайте какие-то вычисления.
Вопрос немного размыт (нужно ли полное количество секунд / минут / часов или округленное до минут / часов / дней), поэтому сложно на него ответить. Я буду опираться на то, что требуется полное количество часов и округленное количество минут и секунд.
UNIX Timestamp
Таким образом можно получить необходимые данные с минимальными затратами (математические операции крайне дешевы по сравнению с тем, о чем пойдет речь дальше).
DateInterval
Более верным решением задач с датами является работа с объектами класса DateTime и DateInterval. Эти два класса представляют собой дату и разницу дат соответственно. При простой работе с временной меткой возникает куча неразрешимых вопросов, например:
Из-за особенностей календаря появляется очень много нетривиальных моментов, где просто невзможно работать с разницей дат как с числом секунд. Поэтому в языках программирования вводятся сущности, аналогичные DateTime и DateInterval. В вышеприведенном случае работа с DateTime будет максимально проста:
Дальше пойдут небольшие пляски с бубном. DateInterval представляет собой именно разность дат и не заточен под нужды вопроса и не представляет интерфейса для получения абсолютной разности в тех или иных величинах (кроме точного количества дней). Поэтому придется взять это количество дней и работать с ним: