За последние 24 часа нас посетили 17977 программистов и 1649 роботов. Сейчас ищут 1707 программистов ...

Формирование конкретной даты

Тема в разделе "PHP для новичков", создана пользователем Дмитрий, 21 окт 2010.

  1. Дмитрий

    Дмитрий Активный пользователь

    С нами с:
    20 май 2009
    Сообщения:
    16
    Симпатии:
    0
    Доброе время суток! Помогите пожалуйста с таким вопросом:
    Я формирую дату на 1, 3, 6 месяцев и на 1 неделю вперед.
    Для месяцев я делал так:
    PHP:
    1.  
    2. $t = time() + ($количество_месяцев*30)*24*60*60;
    3.  
    а для недели так:
    PHP:
    1.  
    2. $t = time() + 7*24*60*60;
    3.  
    После записи даты в БД мне нужно вычеслить, на сколько эта дата ушла вперед. я делал так:
    PHP:
    1.  
    2. $res = mysql_query("Select end From users Where id = ".$id); // получаю дату конца
    3. $end_date = mysql_fetch_array($res);
    4. $date = $end_date[0];
    5. $data_array = explode("-",$date); // разбиваю дату на части месяц, число, год
    6. $mkt_end = mktime(0,0,0,$data_array[1],$data_array[2],$data_array[0]); // перевожу дату в временную метку эпохи Unix
    7. $length = ($mkt_end - time())/(24*60*60*30); // вычисляю количество месяцев, если <1, то это неделя
    8. settype($length, "integer"); // округляю
    9.  
    в результате выходит некоректное число... выходит на 1 меньше, то есть если 6 выводит 5, если 3 выводит 2, а если 1 месяц или 1 неделя выводит ноль...
    как это исправить? помогите пожалуйста!
     
  2. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    strtotime()

    PHP:
    1. settype($length, "integer"); // округляю
    можно проверять сразу меньше оно 1 или нет

    можно сразу использовать
    PHP:
    1. date("d-m-y",mktime());