Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2015, 23:10   #1
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
Смущение Вычитание дат....

Всем привет! Ребят, подскажите, как производительнее вычитать одну дату их другой?

Т.е. есть две даты в формате: дд/мм/гг, и мне из даты1 надо вычесть дату2 и получить разницу в днях. Подскажите, как сделать, чтобы вычитание дат было максимально быстрым?
prizrak1390 вне форума Ответить с цитированием
Старый 24.09.2015, 00:48   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

$a = strtotime('2015-09-23') - перевести дату в числовой вид.

echo idate('Y', $a); - 2015
echo idate('m', $a); - 09
echo idate('d', $a); - 23


или

$b = getdate($a); - получение даты из числового вида

var_dump($b); - массив данных содержащий дату, время и т.д
uberchel вне форума Ответить с цитированием
Старый 24.09.2015, 07:24   #3
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

uberchel, так то всё здорово, а если время в формате:дд/мм/гг, то например strtotime конвертирует не правильно, путая день и месяц.
prizrak1390 вне форума Ответить с цитированием
Старый 24.09.2015, 09:31   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от prizrak1390 Посмотреть сообщение
Всем привет! Ребят, подскажите, как производительнее вычитать одну дату их другой?
Т.е. есть две даты в формате: дд/мм/гг, и мне из даты1 надо вычесть дату2 и получить разницу в днях.
PHP код:
php -a
Interactive shell

php 
$date1 DateTime::createFromFormat('d#m#y|''21/09/15');
php $date2 DateTime::createFromFormat('d#m#y|''11/09/15');
php $interval $date1->diff($date2);
php > echo $interval->format('%a days');
10 days 
DateTime::createFromFormat – создание объекта DateTime из произвольного формата записи даты (см. таблицу).
DateTime::diff – получение интервала между двумя датами.
DateInterval::format – форматирование полученного интервала между двумя датами (в секунды, минуты, часы, дни, etc – см. таблицу).
Andkorol вне форума Ответить с цитированием
Старый 24.09.2015, 11:00   #5
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Andkorol, огромное спасибо!
prizrak1390 вне форума Ответить с цитированием
Старый 24.09.2015, 22:39   #6
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

А вот вопрос, как при вычитании даты, получить отрицательное значение? Ну например если вычесть из 10-го числа, 15 дней, то на выходе получить -5?
prizrak1390 вне форума Ответить с цитированием
Старый 24.09.2015, 22:41   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от prizrak1390 Посмотреть сообщение
А вот вопрос, как при вычитании даты, получить отрицательное значение? Ну например если вычесть из 10-го числа, 15 дней, то на выходе получить -5?
Смотреть таблицу форматирования интервалов по ссылке выше – там всё это есть.
Andkorol вне форума Ответить с цитированием
Старый 24.09.2015, 22:51   #8
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Andkorol, спасибо, я не заметил ссылей внизу поста. Очень информативно.
prizrak1390 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение и вычитание дат и времени apx_angel PHP 1 08.05.2011 15:21
Вычитание дат(дата-дата=кол.дней) zallza Общие вопросы Delphi 1 31.05.2010 22:50
Вычитание avnsanto Microsoft Office Excel 0 24.07.2009 02:33
вычитание даты zetrix Microsoft Office Excel 3 10.11.2006 06:30