Довольном много пришлось повозиться с датами, и причем уже не первый раз. Поэтому было решено выложить сюда куски кода из тех скриптов.
#Вот так я храню время в MYSQL
echo time(); //выведет на экран текущее время в UNIX формате 1337274203
#Преобразовываем формат 1337274203 к нормальному виду
echo date( 'Y.m.d H:i:s',time()); //выведет на экран 2012.05.17 21:05:29
#Преобразование в UNIX 2012год 2месяц 16число 13часов 0минут 15 секунд
echo mktime( 13,0,15,2,16,2012 ); //выведет на экран 1388916855
#Преобразование в UNIX 2012год 2месяц 16число 13часов 0минут 15 секунд
echo mktime( 13,0,15,2,16,2012 ); //выведет на экран 1388916855
После оплаты и сверения кодов, сразу выставляется время - до которого будет действовать этот код.
# Получаем текущее время с сервера
$date = new DateTime(date( 'd F Y H:i:s', time()));
# Прибавляем к дате дни
$date->modify('+30 day');
# Производим модификацию в нужный нам формат времени
$mm_data = $date->format('m/d/Y H:i:s');
Далее нам надо по крону просто уже сравнивать, не настал ли час Х, т.к у меня время измеряется в днях, то крон скрипт я запускаю раз в день. И сравниваю время следующим образом.
# Функция возвращяет разницу по времени
function raznica_po_vremeni($old_date, $new_date, $type) {
$offset = strtotime($new_date . " UTC") - strtotime($old_date . " UTC");
if( $type == 'days'){$return_time = round($offset/60/60/24,1);}
if( $type == 'hours'){$return_time = round($offset/60/60,1);}
if( $type == 'minyte'){$return_time = round($offset/60,1);}
if( $type == 'second'){$return_time = $offset;}
return $return_time;
}
#Получаем сколько прошло дней с 01/29/2012 00:00:00 до текущего времени
$temp_time_left = raznica_po_vremeni( '01/29/2012 12:15:00', date( 'm/d/Y H:i:s', time()), 'days');
echo $temp_time_left;
#Получаем сколько прошло часов с 01/29/2012 00:00:00 до текущего времени
$temp_time_left = raznica_po_vremeni( '01/29/2012 12:15:00', date( 'm/d/Y H:i:s', time()), 'hours');
echo $temp_time_left;
Тэги: php сложить даты, php вычесть даты, php прибавить к дате дни