Php сколько дней осталось до даты
Перейти к содержимому

Php сколько дней осталось до даты

  • автор:

Snip Code

До даты Х осталось 5 лет, 6 месяцев, 5 дней, 23 часов, 45 минут, 38 секунд

Задача: вывести пользователю сколько времени осталось до момента Х, например:

Прием заказов будет завершен через 5 дней, 8 часов, 15 минут, 28 секунд

Решение

Рейтинг:

Если вы знаете более оригинальное, красивое, ЛУЧШЕЕ решение этой задачи, у вас есть шанс заработать 100 рублей. Если ваше решение будет признано лучшим, деньги ваши! Мы гарантируем выплату!

Всего 6 комментариев

Вот, скрестил с функцией определения окончаний 🙂

SnipCode.ru
Александр

У меня php версии 5.2. Получаю ошибку:

SnipCode.ru

Боюсь, что никак необходимо использовать другую функцию. хотя на 5.2.17 работает
http://snipcode.ru/phpinfo.php
Комментарий добавлен 09-07-2012 в 10:37:15 ID# 25
Ответить на комментарий пользователя SnipCode.ru

ну и как понять
Комментарий добавлен 03-12-2012 в 19:43:48 ID# 67
Ответить на комментарий пользователя ваня

SnipCode.ru

что именно, Иван?
Комментарий добавлен 03-12-2012 в 19:51:19 ID# 68
Ответить на комментарий пользователя SnipCode.ru

phpguru

Функция отличная только надо бы добавить для utf8 кодировку обработать строку, а то не все понимают как сделать подобное!
$str = iconv_strlen($str,’UTF-8′);
Я так считаю!
13-12-2013 в 12:59:38 ID# 454 посмотреть.

SnipCode.ru

Возможно Вы правы, непонятно только зачем тут iconv_strlen (((
13-12-2013 в 13:02:55 ID# 455 посмотреть.

Сергей

поторопился, так надо в конце, пардон.
return $v[‘pass’];
>
return FALSE;
>

02-12-2013 в 23:33:41 ID# 377 посмотреть.

Сергей

Думаю все же логичней использовать foreach, т.к. можно промахнуться с ключами, а если массив ассоциативный (я раньше делал ключ = дата и время регистрации), то вообще работать не будет.

function search($array,$login)
<
foreach ($array as $k=>$v)
if($v[‘login’] == $login) <
return $v[‘pass’];
>
>
return FALSE;
Так, на минутку.
Время исполнения смысла не имеет, авторизация используется 1 раз, если юзер не параноик)))

02-12-2013 в 23:33:41 ID# 376 посмотреть.

Пабло

Как сделана ваша система рейтинга,с учетом количеством людей,проголосовавших?
11-11-2013 в 17:04:39 ID# 207 посмотреть.

SnipCode.ru

ну. вобщем то все просто: берем общую оценку, делим на кол-во проголосовавших, получаем рейтинг
11-11-2013 в 17:07:06 ID# 208 посмотреть.

Пабло

Да,просто у меня возникли проблемы,при сохранении данных,в бд и отображение количество проголосовавших людей,у вас где нибудь на сайте описано как это сделано или будет?

Мне нужна система рейтинга точно такая же как у вас=)
11-11-2013 в 17:10:56 ID# 209 посмотреть.

KorniloFF

Приведенный код обрезает до первой точки в строке, в случае, если в ней будет их несколько, что не соответствует теме.
Вот код, обрезающий до последней точки:

Виктор

Все отлично работает! Извините , у меня есть задача отрезать после второй и до второй запятой , что нужно поправить в первом примере?
Спасибо!
30-09-2013 в 20:34:07 ID# 204 посмотреть.

Объективный таймер обратного отсчёта на PHP

Недавно мы разобрались с тем, как можно показывать новые данные на странице без перезагрузки, а до этого — как использовать PHP-скрипты. Сегодня объединим это в один проект и сделаем таймер обратного отсчёта на PHP.

В чём идея

Допустим, у нас есть какое-то событие, которое заканчивается 16 октября 2022 года в 14:00 — например распродажа. Нам нужно вывести таймер на страницу, который будет отсчитывать время до этого события.

При этом нам важно, чтобы отсчёт не зависел от пользователя: например, если он переставит дату на календаре своего компьютера на 1 сентября, то чтобы у него не появилось 9 дополнительных дней распродажи. Поэтому мы не можем использовать дату и время с компьютера пользователя, нам нужно брать их с сервера.

Получается, что алгоритм будет работать так:

  • берём дату с сервера;
  • берём время с сервера;
  • находим разницу с искомой датой (16 октября 2022) и показываем, сколько времени осталось до наступления события;
  • если дата уже прошла, сообщаем об этом (отложим на другую итерацию, потому что событие только через год).

Раз у нас дата лежит на сервере, то и отдавать мы будем её при помощи PHP-скрипта. Но раз сервер всё равно нам что-то отдаёт, то пусть это сразу будет готовый таймер с текстом, а мы его встроим на страницу. Это значит, что нам нужен такой скрипт, который просто будет постоянно через PHP получать с сервера данные и отправлять их в нужное место на странице.

Что понадобится

Единственное, что нам нужно от сервера, — чтобы он мог выполнять PHP-скрипты. Это умеет делать практически любой веб-сервер в интернете, поэтому, если у вас есть хостинг и на хостинге можно размещать сайты, — скрипт тоже будет там работать.

Если хостинга с сайтом нет, то можно сделать так: установить MAMP и получить рабочий сервер с PHP у себя на компьютере.

Добавляем на странице место для таймера

Так как всю работу будут делать скрипты, то нам нужно просто указать место на странице, куда отправить результат. Возьмём наш учебный сайт mihailmaximov.ru и перед разделом с контактами добавим блок для таймера:

Этого будет достаточно, чтобы скрипт показал таймер в выбранном месте.

Пишем скрипт на странице

Первым делом подключаем jQuery — это позволит нам работать с AJAX-скриптом и вызывать его самым простым способом.

<script type=»text/javascript»
src=»https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js»></script>

Теперь в раздел <head> добавляем простой скрипт на JavaScript. Его задача — периодически обращаться к серверу и обновлять данные на странице. Благодаря AJAX он сможет это делать без перезагрузки, работая с отдельным блоком:

Готовим PHP-скрипт

Мы уже работали с PHP-скриптами, когда делали форму обратной связи, и там же рассказывали, как загрузить этот скрипт на сервер. Если пропустили этот цикл — будет полезно:

Форум PHP программистов ► PHP практикум ► PHP общие вопросы

Подскажите пожалуйста, как вывести сколько дней часов и минут осталось от даты $data2 до даты $data1 ?
причем:
1)если осталось несколько дней, часов и минут вывести "осталось .. дней .. часов .. минут"
2)если осталось несколько часов и минут вывести "осталось .. часов .. минут"
3)если осталось несколько минут вывести "осталось .. минут"

0

Сообщений: 1266
Пользователь №: 24135
На форуме:
Карма: 47

Используй функции для работы с датой и временем.

Переводишь даты в секунды, вычитаешь из большего меньшее, результат преобразуешь в дни/часы/минуты/секунды.

0

Сообщений: 2566
Пользователь №: 18040
На форуме:
Карма: 78

Выбирай на свой вкус и тести .

0

Сообщений: 9606
Пользователь №: 26630
На форуме:
Карма: 664

0

Сообщений: 2566
Пользователь №: 18040
На форуме:
Карма: 78

0

Сообщений: 806
Пользователь №: 17108
На форуме:
Карма: 1

выдает неправильный результат (08 05:00)

0

Сообщений: 9606
Пользователь №: 26630
На форуме:
Карма: 664

Цитата (INSIDIOUS @ 25.07.2011 — 14:21)
killer8080 если на твоем хостинге нет php 5, меняй хостинг!

на моём хостинге, точнее хостинге заказчика, PHP Version 5.2.6-1+lenny13, менять хостинг пока причин нет 🙂
Strannik
вот это

можно записать проще

а дальше если php >= 5.3.0 ,то как посоветовал INSIDIOUS, если более старая версия php то чисто арифметически, делишь на количество секунд в сутках и округляешь в меньшую сторону, получишь количество дней, ну и так далее.

Name already in use

redflag_inernship / 5_php / 1_basics / 10_dates / README.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink
  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Задачи на даты в PHP

Примеры решения задач

Задача. Выведите 23 сентября 2031 года, 12:58:59 в формате timestamp.

Решение: воспользуемся функцией mktime (сентябрь — 9-тый месяц):

Можно также воспользоваться функцией strtotime, если представить нужную дату в формате 2031-09-23 12:58:59:

Задача. Найдите разницу между 1 сентября 2010 года, 7:25:59 и текущим моментом времени в секундах.

Решение: текущий момент времени в формате timestamp получим с помощью функции time, а timestamp для заданной даты — с помощью функции mktime. Отнимем одно число от второго и получим искомую разницу:

Задача. Выведите текущую дату-время в формате ‘2025.12.31 12:59:59’.

Решение: воспользуемся функцией date, передав ей управляющие команды в таком порядке: год (команда Y), потом точку как символ, потом месяц (команда m), опять точку, день (команда d), час (команда H), двоеточие, минуту (команда i), секунду (команда s). Получится такая строка: ‘Y.m.d H:i:s’. Подставим ее в функцию date:

Задача. Выведите 1-го сентября текущего года в формате ‘2018.09.01’.

Решение: для начала с помощью функции mktime преобразуем 1-го сентября текущего года в формат timestamp. Мы это делаем для того, чтобы подставить найденное число вторым параметром в функцию date (а первым параметром для date мы укажем формат вывода).

Так как требуется текущий год, то последний параметр (год) для mktime мы не указываем — тогда возьмется текущий год:

Ну, а теперь подставим найденный timestamp в функцию date:

Функция date. Вывод дня недели словом

Задача. Узнайте, какой день недели (словом) был 1 сентября 2010 года.

Решение: решение аналогично предыдущей задаче, только формат вывода для функции date мы сделаем в таком виде: ‘w’. В этом случае date вернет нам число, соответствующее дню недели за заданную дату (0 — воскресенье, 1 — понедельник и так далее):

Кстати, если бы мы хотели узнать, какой день недели сегодня — мы бы просто не передавали второй параметр функции date (тогда бы взялся текущий момент времени и, соответственно, вывелась бы ‘w’ за текущий день).

Продолжим решать нашу задачу: мы вывели номер дня недели, а по задаче его следует вывести словом. Для этого составим массив дней недели $week и с его помощью выведем то, что нам нужно. Вот этот массив:

Совместим теперь то, что вернет нам date, с нашим массивом $week:

Задача. Дана дата в формате ’31-12-2025′. С помощью функций mktime и explode переведите эту дату в формат timestamp.

Решение: разобьем строку ’31-12-2025′ функцией explode в массив $arr:

В элементе $arr[0] будет лежать день, в элементе $arr[1] — месяц, в элементе $arr[2] — год. Подставим эти данные в функцию mktime (напоминаю, что она принимает данные в формате ‘. месяц-день-год’, не ‘. день-месяц-год’)

##Задачи для решения

Timestamp: time и mktime

Для решения задач данного блока вам понадобятся следующие функции: time, mktime.

Выведите текущее время в формате timestamp.

Выведите 1 марта 2025 года в формате timestamp.

Выведите 31 декабря текущего года в формате timestamp. Скрипт должен работать независимо от года, в котором он запущен.

Найдите количество секунд, прошедших с 13:12:59 15-го марта 2000 года до настоящего момента времени.

Найдите количество целых часов, прошедших с 7:23:48 текущего дня до настоящего момента времени.

Для решения задач данного блока вам понадобятся следующие функции: date.

Выведите на экран текущий год, месяц, день, час, минуту, секунду.

Выведите текущую дату-время в форматах ‘2025-12-31’, ‘31.12.2025’, ‘31.12.13’, ’12:59:59′.

С помощью функций mktime и date выведите 12 февраля 2025 года в формате ‘12.02.2025’.

Создайте массив дней недели $week. Выведите на экран название текущего дня недели с помощью массива $week и функции date. Узнайте какой день недели был 06.06.2006, в ваш день рождения.

Создайте массив месяцев $month. Выведите на экран название текущего месяца с помощью массива $month и функции date.

Найдите количество дней в текущем месяце. Скрипт должен работать независимо от месяца, в котором он запущен.

Сделайте поле ввода, в которое пользователь вводит год (4 цифры), а скрипт определяет високосный ли год.

Сделайте форму, которая спрашивает дату в формате ‘31.12.2025’. С помощью функций mktime и explode переведите эту дату в формат timestamp. Узнайте день недели (словом) за введенную дату.

Сделайте форму, которая спрашивает дату в формате ‘2025-12-31’. С помощью функций mktime и explode переведите эту дату в формат timestamp. Узнайте месяц (словом) за введенную дату.

  1. Сделайте форму, которая спрашивает две даты в формате ‘2025-12-31’. Первую дату запишите в переменную $date1, а вторую в $date2. Сравните, какая из введенных дат больше. Выведите ее на экран.

Для решения задач данного блока вам понадобятся следующие функции: strtotime.

Дана дата в формате ‘2025-12-31′. С помощью функции strtotime и функции date преобразуйте ее в формат ’31-12-2025’.

Сделайте форму, которая спрашивает дату-время в формате ‘2025-12-31T12:13:59′. С помощью функции strtotime и функции date преобразуйте ее в формат ’12:13:59 31.12.2025’.

Прибавление и отнимание дат

Для решения задач данного блока вам понадобятся следующие функции: date_create, date_modify, date_format.

  1. В переменной $date лежит дата в формате ‘2025-12-31’. Прибавьте к этой дате 2 дня, 1 месяц и 3 дня, 1 год. Отнимите от этой даты 3 дня.

Узнайте сколько дней осталось до Нового Года. Скрипт должен работать в любом году.

Сделайте форму с одним полем ввода, в которое пользователь вводит год. Найдите все пятницы 13-е в этом году. Результат выведите в виде массива дат.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *