Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 579
1

Работа с датой

23.07.2016, 18:56. Показов 1366. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. В БД есть дата в таком виде:

19:40:00 25:07:2016

Мне нужно сделать обратный отчет, чтобы от текущей даты и времени вывелась примерно такая запись:

До события: количество дней:часы:минуты:секунды (в данном случае примерно так: 02:00:40:53). Как можно такое реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2016, 18:56
Ответы с готовыми решениями:

Работа с датой
Добрый вечер, уважаемые пользователи ! Подскажите пожалуйста, почему вот этот кусочек кода...

Работа с датой
Как проще всего вычислить прошло ли после последнего запуска скрипта 2 часа или нет? Получаешь...

Работа с датой
Привет всем. Нужно получить разницу между двумя датами в днях. Если сделать так: ...

Работа с датой
Здравствуйте. Никак не могу разобраться как работать с датой в PHP. Мне приходит дата в формате...

9
Ушел наливать чай
188 / 138 / 32
Регистрация: 02.03.2013
Сообщений: 650
23.07.2016, 19:03 2
Лучший ответ Сообщение было отмечено Dmitrin как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
    function downcounter($date){
        $check_time = strtotime($date) - time();
        if($check_time <= 0){
            return false;
        }
 
        $days = floor($check_time/86400);
        $hours = floor(($check_time%86400)/3600);
        $minutes = floor(($check_time%3600)/60);
        $seconds = $check_time%60; 
 
        $str = '';
        if($days > 0) $str .= declension($days,array('день','дня','дней')).' ';
        if($hours > 0) $str .= declension($hours,array('час','часа','часов')).' ';
        if($minutes > 0) $str .= declension($minutes,array('минута','минуты','минут')).' ';
        if($seconds > 0) $str .= declension($seconds,array('секунда','секунды','секунд'));
 
        return $str;
    }
 
    function declension($digit,$expr,$onlyword=false){
        if(!is_array($expr)) $expr = array_filter(explode(' ', $expr));
        if(empty($expr[2])) $expr[2]=$expr[1];
        $i=preg_replace('/[^0-9]+/s','',$digit)%100;
        if($onlyword) $digit='';
        if($i>=5 && $i<=20) $res=$digit.' '.$expr[2];
        else
        {
            $i%=10;
            if($i==1) $res=$digit.' '.$expr[0];
            elseif($i>=2 && $i<=4) $res=$digit.' '.$expr[1];
            else $res=$digit.' '.$expr[2];
        }
        return trim($res);
    }
?>
Использование:
PHP
1
<?=downcounter('2013-12-31 23:59:59');?>
1
23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 579
23.07.2016, 19:06  [ТС] 3
Stas_Garcia, Прекрасно! То, что нужно, спасибо.
0
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
23.07.2016, 19:08 4
Лучший ответ Сообщение было отмечено Dmitrin как решение

Решение

PHP
1
2
3
4
$datetime1 = date_create('2016-05-11 15:46:49');
$datetime2 = date_create('2016-10-13 01:25:30');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%a дн., %H ч., %i мин., %s сек.');
Добавлено через 1 минуту
Stas_Garcia, как-то мало кода... Можно было и побольше
1
23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 579
23.07.2016, 19:09  [ТС] 5
Да, второй вариант действительно намного проще и компактнее))
0
Stas_Garcia
23.07.2016, 19:12
  #6

Не по теме:

Цитата Сообщение от Пифагор Посмотреть сообщение
как-то мало кода...
Зато какой навороченный 8-)

0
23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 579
23.07.2016, 20:41  [ТС] 7
Пифагор, может Вы и подскажите, как сделать так:

Имеется дата 19:40:00 25:07:2016

И имеется строковое поле с часами:минутами:секундами. Например, 12:40:30.

Как можно прибавить это строковое поле к дате?
0
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
23.07.2016, 21:03 8
PHP
1
2
3
4
5
6
7
$d1 = '2016-07-25 19:40:00';
$d2 =  '12:40:30';
$d3 = explode(":", $d2);
 
$date = new DateTime('2016-07-25 19:40:00');
$date->add(new DateInterval('PT'.$d3[0].'H'.$d3[1].'M'.$d3[2].'S'));
echo $date->format('Y-m-d H:i:s'); //2016-07-26 08:20:30
1
23 / 23 / 11
Регистрация: 04.12.2012
Сообщений: 579
23.07.2016, 21:11  [ТС] 9
Пифагор, Спасибо большое) Очень помогли!
0
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
23.07.2016, 21:12 10
Не за что.
PHP
1
$d1 = '2016-07-25 19:40:00';
Лишняя строка. Можно убрать.
0
23.07.2016, 21:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2016, 21:12
Помогаю со студенческими работами здесь

Работа с датой
Здравствуйте. Предположим я извлек из базы некую дату со временем (datatime) и записал ее в...

Работа с датой
Делаю по книге самое простое: &lt;?php $d = date(&quot;d-m-Y&quot;); echo &quot;Сегодня $d&quot;; ?&gt; Получаю...

Работа с датой
$oldDate = '2016-04-20'; $day = 3; // через сколько дней обновить $rs = date(&quot;Y-m-d&quot;,...

Работа с Датой
Ребята, такая задачка помогите решить. Как реализовать: Сегодня дата 14.12.2015 11:35 Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru