И снова даты 2002-03-29 --> 2002-04-03

Zaval

Новичок
И снова даты 2002-03-29 --> 2002-04-03

Подскажите как правильно прибавить к дате определенное число, и получить правильную дату типа: 2002-03-29+5 --> 2002-04-03
Делаю как в мануале, полный бред.
$tomorrow = mktime(0,0,0,date("m") ,date("d")+5,date("Y"));

Кто нибудь делал этой штуке ехо?
 

tony2001

TeaM PHPClub
Zaval:
либо ты не понял пример из мана, либо ты выполняешь его не так.
лучше делать так, как в мане описано, т.е. через mktime, т.к. вариант Larson не учитывает перевод часов.
 

RomikChef

Guest
Zaval
в мане написано date("Y-m-d",mktime(0,0,0,date("m") ,date("d")+5,date("Y")));
на досуге почитай в мане про различие между этими двумя функциями.
 

Zaval

Новичок
Спасибо я уже разобрался вот может кому пригодиться.
$next_day=date("d",mktime(0,0,0,date($month),$day+$days,date($year)));
 

Zaval

Новичок
Еще одна проблема:

<?
// ФУНКЦИЯ ПОДГОТАВЛИВАЕТ ФОРМАТ ДАТЫ ТИПА 15-02-1971 В 19711502 для проверки ее на корректность
// И ПРЕОБРАЗУЕТ ДАТУ ИЗ НАШЕГО ФОРМАТА В БУРЖУЙСКИЙ ТИПА 15-02-1971 В 19710215 для занесения в БД

function check_date($date){
$year=substr($date,6,4);
$month=substr($date,3,2);
$day=substr($date,0,2);
$date=checkdate($month,$day,$year);
if($date) $date="$year.$month.$day";
return $date;
}
?>
Так вот, она нормально работала до ЭТОГО (10) месяца, именно цифра 10 в месяце дает глюк, с начала раб. дня сижу и ни-ни ???
 

Zaval

Новичок
Пользователь вводит типа того:
<input name="day" type="text" style="width=20px" title="День (в формате 09)" value="<? if (!$day) { echo date('d'); } else { echo $day; }?>">
и т.д.
Потом я ее разбираю , проверяю, и опять собираю, (см. выше) для записи в БД
 

tony2001

TeaM PHPClub
ну так чекай ее [m]check_date[/m] и вводи сразу в формате $year$month$day
 

RomikChef

Guest
Zaval а зачем ты сначала эту строку собирешь, а потом - снова режешь?
не проже передавать функции check_date не одну строку, а три -
check_date($day,$month,$year)?
 

Zaval

Новичок
Zaval а зачем ты сначала эту строку собирешь, а потом - снова режешь?
не проже передавать функции check_date не одну строку, а три -
check_date($day,$month,$year)?
То-же и для tony2001

А все равно потом резать, иначе как ее в БД запихнеш?
Вернее запихнуть можно $year.$month.$day но тогда резать для проверки надо.

Точно, сейчас попробую, просто передать функции три аргумента : $day,$month,$year -правильно? Кажись спасибо :)
 

Zaval

Новичок
Так работает:
<?php
function check_date($date){

global $god; global $mesac; global $day;

$date=checkdate($mesac,$day,$god);
if($date) echo $date=date("$god.$mesac.$day");
return $date;
}
?>

Всем спасибо.
Вопрос вдогонку:
Не понял, а функции можно передать три аргумента?

Так куча ругани:
<?php
function check_date($date,$god,$mesac,$day){
$date=checkdate($mesac,$day,$god);
if($date) echo $date=date("$god.$mesac.$day");
return $date;
}
?>
Может я сильно просто смотрю на синтаксис?
 

RomikChef

Guest
PHP:
function check_date($day,$mesac,$god){
  if(checkdate($mesac,$day,$god))  return $god.$mesac.$day;
}
echo check_date(2,10,2002);

или лучше так

if(!$date=check_date(2,10,2002)) echo "Неверная дата!";
else $query=....
то есть, совместить проверку с присвоением. знак равно должен быть один.
 

tony2001

TeaM PHPClub
вообще неплохо было бы ман смотреть, а потом уже писать.
PHP:
function check_date($year,$month,$day){
  $date=checkdate($month,$day,$year);
  if($date)  {
    echo date("Y.m.d",mktime (1,1,1,$month,$day,$year));
  }
}
дату в базе лучше хранить в timestamp имхо.
так что твои эти преобразования не нужны.
кроме того, если эта дата СЕЙЧАС, то есть такая функция, как NOW() и еще масса полезной инфы в мане.
 

RomikChef

Guest
тони, это не СЕЙЧАС :)
и mktime тут ну совершенно лишняя :)
 

tony2001

TeaM PHPClub
эээ..
да, лишняя.
ирц, аська, рассылки, три открытых файла и форум сбивают с мыслей...
 

Zaval

Новичок
Ай да я :0 так парился, а все раза в три проще. Чем даже моя final version
PHP:
function check_date($date){
global $god,$mesac,$day;
       $date=checkdate($mesac,$day,$god);
    if($date)$date="$god.$mesac.$day";
return $date;
}
и последнее, на форуме я недавно, и немогу допетрить как вы код подсвечиваете?
 
Сверху