Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
 Аватар для Staz Lincord
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323

Сложение дат

24.02.2016, 08:43. Показов 6752. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет друзья! Помогите мне с датами. Хочу сложите две даты такого формата Y-m-d H:i:s (2016-02-24 8:40:00).
2016-02-24 8:40:00+2016-02-24 8:40:00=4032-03-24 8:40:00, чет типа такого. Заранее Огромнящие спасибо!

P.S. Прошу в процедурном стиле
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2016, 08:43
Ответы с готовыми решениями:

Сложение дат
Подскажите, уже достали эти даты. $subscr_days = '12'; $subscr_date = '2017-02-15'; $end_date = strtotime(+$subscr_days.'...

Как реализовать сложение дат (прибавить месяцы к дате) ?
Столкнулся с такой задачей - нужно к дате (в формате MySQL) прибавить несколько месяцев, и вывести эту дату в человекопонятном формате....

Сложение дат
Вообщем при складывании дат имеется кусочек: day=day+d1; while (month==1 && day>31 || month==3 && day>31 || month==5...

23
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
24.02.2016, 09:03
Цитата Сообщение от Lincord Посмотреть сообщение
Помогите мне с датами. Хочу сложите две даты такого формата Y-m-d H:i:s (2016-02-24 8:40:00).
Покажите что есть (код в студию) и укажите где не получается (на то что работает не так).
0
 Аватар для Staz Lincord
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
24.02.2016, 09:33  [ТС]
Gcom, у меня даты хранятся (В MYSQL) в таком формате Y-m-d H:i:s, (TIMESTAMP). Я вообще хз как складывать даты. У меня есть даты типа такого вида: 0-1-2 2:00:00, и хочу прибавить это к нынешнему времени что бы получилось 2016-02-24 8:40:00+0-1-2 2:00:00=2016-03-26 10:40:00
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
24.02.2016, 09:34
Цитата Сообщение от Lincord Посмотреть сообщение
Gcom, у меня даты хранятся в таком формате Y-m-d H:i:s, (TIMESTAMP).
Я этого не вижу, Вы свой код можете сюда вставить?
0
 Аватар для Staz Lincord
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
24.02.2016, 09:48  [ТС]
Gcom, я хз как делать это, поэтому спрашиваю, как сложить эти две даты?

PHP
1
2
3
$row = mysqli_fetch_assoc(mysqli_query($connect, "SLECT `date`, `date_two` FROM `dates`"));
$row['date'];
$row['date_two'];
Вот код...
0
 Аватар для Harma
43 / 44 / 35
Регистрация: 13.01.2016
Сообщений: 155
24.02.2016, 10:04
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$data_1="2016-12-01";
$data_2="2012-11-11";
 
list($year_1, $month_1, $day_1) = explode("-", $data_1);
list($year_2, $month_2, $day_2) = explode("-", $data_2);
$year=$year_1+$year_2;
$month=$month_1+$month_2; 
$day=$day_1+$day_2; 
echo $year,'-'.$month,'-'.$day;
?>
Не это случаем?
1
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
24.02.2016, 10:15
Цитата Сообщение от Lincord Посмотреть сообщение
Я вообще хз как складывать даты.
преобразовывать в юникстайм и складывать
из мускула можно сразу вынимать в этом формате:
https://dev.mysql.com/doc/refm... -timestamp
в пхп текущий юникстайм можно получить командой
PHP
1
time();
юникстайм - это фактически число секунд....
поэтому чтоб допустим, увеличить текущую дату на день нужно прибавить 86400:
PHP
1
$tomorow = time() + 86400;
ну а потом уже вы можете отформатировать результат в нужный вид командой
PHP
1
date();
1
 Аватар для Staz Lincord
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
24.02.2016, 10:22  [ТС]
Harma, Близко! Надо еще часы, минуты и секунды. Я добавил их в твой код, но они не работают.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
$data_1="2016-12-01 12:13:10";
$data_2="2012-11-11" 12:00:00;
 
list($year_1, $month_1, $day_1, $hour_1, $minute_1, $second_1) = explode("-", $data_1);
list($year_2, $month_2, $day_2, $hour_2, $minute_2, $second_2) = explode("-", $data_2);
$year=$year_1+$year_2;
$month=$month_1+$month_2;
$day=$day_1+$day_2;
$hour=$hour_1+$hour_2;
$minute=$minute_1+$minute_2;
$second=$second_1+$second_2;
echo $year,'-'.$month,'-'.$day,' '.$hour,'-'.$minute,'-'.$second;
Наверное потому что explode раздиляет только "-", а как можно добавить еще один?
0
 Аватар для Harma
43 / 44 / 35
Регистрация: 13.01.2016
Сообщений: 155
24.02.2016, 10:45
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$data_1="2016-12-01 12:13:10";
$data_2="2012-11-11 11:10:30";
 
$var_1 =  split('[-: ]', $data_1);
$var_2 =  split('[-: ]', $data_2);
 
$year=$var_1[0]+$var_2[0];
$month=$var_1[1]+$var_2[1];
$day=$var_1[2]+$var_2[2];
$hour=$var_1[3]+$var_2[3];
$minute=$var_1[4]+$var_2[4];
$second=$var_1[5]+$var_2[5];
 
echo $year,'-'.$month,'-'.$day,' '.$hour,'-'.$minute,'-'.$second;
P.S. Набросок
1
 Аватар для Staz Lincord
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
24.02.2016, 10:56  [ТС]
Harma, часы становятся больше 24, минут и секунды больше 60... Что делать?
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
24.02.2016, 11:03
Цитата Сообщение от Lincord Посмотреть сообщение
0-1-2 2:00:00
Это что значит? Что за дата странная, какому времени она соответствует?

Добавлено через 2 минуты
Цитата Сообщение от Lincord Посмотреть сообщение
Harma, часы становятся больше 24, минут и секунды больше 60... Что делать?
Изначально писать нормальный код
1
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
24.02.2016, 11:04
Цитата Сообщение от Lincord Посмотреть сообщение
Что делать?
не маяться фигней! если так уж сильно не хочется вынимать юникстайм прямо из базы, есть функция, которая преобразует в него из "типа текстовых вариантов":
PHP
1
strtotime()
2
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
24.02.2016, 11:15

Не по теме:

Цитата Сообщение от Dmitry Посмотреть сообщение
не маяться фигней!
+1
Полностью согласен



Добавлено через 4 минуты
Lincord, Все что Вам нужно все тут.
PHP
1
2
3
4
5
6
7
$sData_1 = "2016-02-24 8:40:00";
$sData_2 = "1971-01-01 00:00:00"; // Ровно год от 1970-01-01 00:00:00
 
$sDataSec1 = strtotime($sData_1); echo ($sDataSec1.'<br>');
$sDataSec2 = strtotime($sData_2); echo ($sDataSec2.'<br>');
$sDataSec3 = $sDataSec1 + $sDataSec2; echo ($sDataSec3.'<br>');
$sDataSec4 = date ("Y m d H:i:s", $sDataSec3); echo ($sDataSec4.'<br>');
1
 Аватар для Staz Lincord
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
24.02.2016, 11:18  [ТС]
Dmitry, а как можно преобразовать формат Y-m-d H:i:s в юникстайм(секундный)? И как обратно?

Добавлено через 54 секунды
Gcom, ща попробую.
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
24.02.2016, 11:23
Цитата Сообщение от Lincord Посмотреть сообщение
ща попробую.
Может и это пригодиться:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$sData_s = "1970-01-01 00:00:01"; // Секунда
$sData_i = "1970-01-01 00:01:00"; // Минута
$sData_H = "1970-01-01 01:00:00"; // Час
$sData_d = "1970-01-02 00:00:00"; // День
$sData_m = "1970-02-01 00:00:00"; // Месяц
$sData_Y = "1971-01-01 00:00:00"; // Год
 
$sData_s = strtotime($sData_s); echo ($sData_s.' Секунда<br>');
$sData_i = strtotime($sData_i); echo ($sData_i.' Минута<br>');
$sData_H = strtotime($sData_H); echo ($sData_H.' Час<br>');
$sData_d = strtotime($sData_d); echo ($sData_d.' День<br>');
$sData_m = strtotime($sData_m); echo ($sData_m.' Месяц<br>');
$sData_Y = strtotime($sData_Y); echo ($sData_Y.' Год<br>');
1
 Аватар для Staz Lincord
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
24.02.2016, 11:42  [ТС]
Ребят а как найти разницу между двумя датами? У меня есть две даты, одна больше другой, и надо найти между ними время, и это время прибавить к большой дате. Я формулу для сайта пишу. Мозг вскипает
0
 Аватар для Gcom
82 / 82 / 18
Регистрация: 03.02.2016
Сообщений: 564
Записей в блоге: 1
24.02.2016, 11:59
Цитата Сообщение от Lincord Посмотреть сообщение
У меня есть две даты, одна больше другой, и надо найти между ними время
PHP
1
2
3
4
$datetime1 = date_create('2012-03-27 ');
$datetime2 = date_create('2012-05-01');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%y год(а) %m месяц(ов) %d дней');
1
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 12:06
Цитата Сообщение от Lincord Посмотреть сообщение
Ребят а как найти разницу между двумя датами? У меня есть две даты, одна больше другой, и надо найти между ними время, и это время прибавить к большой дате. Я формулу для сайта пишу. Мозг вскипает
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
        //Enter your code here, enjoy!
 
$date_1 = new DateTime( "2016-12-01 12:13:10" );
$date_2 = new DateTime( "2012-11-11 12:00:00" );
$date_3 = new DateTime( "2016-00-00 12:00:00" );
 
$intv_tmp = $date_2->diff( $date_1 );
 
$date_result = $date_3->add( $intv_tmp );
 
print_r( $date_result );
Добавлено через 3 минуты
Цитата Сообщение от Lincord Посмотреть сообщение
Ребят а как найти разницу между двумя датами? У меня есть две даты, одна больше другой, и надо найти между ними время, и это время прибавить к большой дате. Я формулу для сайта пишу. Мозг вскипает
а , перечитал и понял про что вы
вот
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
        //Enter your code here, enjoy!
 
function getNewDate( $date1 , $date2 ) {
    $date_1 = new DateTime( $date1 );
    $date_2 = new DateTime( $date2 );
    $intv_tmp = $date_1->diff( $date_2 );     
    if ( $intv_tmp->invert ) {
        $date_1->sub( $intv_tmp );
        return $date_1;
    }
    $date_2->add( $intv_tmp );
    return $date_2;
}
 
$newDate = getNewDate( "2016-12-01 12:13:10" , "2017-11-11 12:00:00" );
 
 
print_r( $newDate );
Добавлено через 19 секунд
http://sandbox.onlinephpfuncti... 27820ef1be
1
 Аватар для Staz Lincord
13 / 12 / 8
Регистрация: 04.12.2013
Сообщений: 323
24.02.2016, 12:22  [ТС]
Блин пацаны сорян Я такой тупой... Вот формула: Берем нынешнее время (Y-m-d H:i:s) и заданное время(например 2016-03-24 12:00:00), Находим между ними сколько времени осталось и записываем это время в БД. Потом когда нужно будет, я прибавлю это время(которое в БД) к нынешней дате. В итоге должно на выходе быть в формате (Y-m-d H:i:s). ПРОШУ ПОМОЧЬ МНЕ ПОЖАЛУЙСТА! ОГРОМНЮЩЕЕ СПАСИБО!
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 12:37
Цитата Сообщение от Lincord Посмотреть сообщение
Блин пацаны сорян Я такой тупой... Вот формула: Берем нынешнее время (Y-m-d H:i:s) и заданное время(например 2016-03-24 12:00:00), Находим между ними сколько времени осталось и записываем это время в БД. Потом когда нужно будет, я прибавлю это время(которое в БД) к нынешней дате. В итоге должно на выходе быть в формате (Y-m-d H:i:s). ПРОШУ ПОМОЧЬ МНЕ ПОЖАЛУЙСТА! ОГРОМНЮЩЕЕ СПАСИБО!
я вам код привел рабочий

Добавлено через 45 секунд
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
        //Enter your code here, enjoy!
 
function getNewDate( $date1 , $date2 ) {
    $date_1 = new DateTime( $date1 );
    $date_2 = new DateTime( $date2 );
    $intv_tmp = $date_1->diff( $date_2 );     
    if ( $intv_tmp->invert ) {
        $date_1->sub( $intv_tmp );
        return $date_1->format('Y-m-d H:i:s');
    }
    $date_2->add( $intv_tmp );
    return $date_2->format('Y-m-d H:i:s');
}
 
echo getNewDate( "2016-12-01 12:13:10" , "2017-11-11 12:00:00" );
Добавлено через 29 секунд
http://sandbox.onlinephpfuncti... b5ee01506a

Добавлено через 21 секунду
Цитата Сообщение от WhiteMind Посмотреть сообщение
Потом когда нужно будет, я прибавлю это время(которое в БД) к нынешней дате
ааа

Добавлено через 5 минут
тогда наверное вот так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
        //Enter your code here, enjoy!
 
function getNewDate( $date1 , $date2 ) {
    $date_1 = new DateTime( $date1 );
    $date_2 = new DateTime( $date2 );
    $intv_tmp = $date_1->diff( $date_2 );     
    
    return $intv_tmp->format('%Y-%m-%d %H:%i:%s');
}
 
echo getNewDate( "2016-12-01 12:13:10" , "2017-11-11 12:00:00" );
Добавлено через 33 секунды
http://sandbox.onlinephpfuncti... b63d7256d9
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.02.2016, 12:37
Помогаю со студенческими работами здесь

Сложение 2 дат
Есть 2 таблицы на 2 разных формах. На второй форме в таблицу добавляется значение &quot;Гарантия&quot;. На первой форме при добавлении в...

Сложение двух дат
добрый день помогите плиз со сложением двух дат что-то нечё не может прийти в голову как это сделать) #include &lt;stdio.h&gt; ...

Сложение дат MySQL
Доброго времени суток, уважаемые! Подскажите пожалуйста, с чем может быть связано следующая ситуация: Добавляем к дате 1 месяц -...

Сложение/вычитание времение и дат
Собственно как сложить/вычесть две даты? Какие функции для этого существуют? Входные данные приходят в строке char. Спасибо.

Сложение и сравнение дат в SQL запросе
Добрый день! Есть задача сделать выборку из БД по условию, в которому сумма даты, указанной в поле БД, с числовым полем (дни) не...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru