Перейти к содержимому


Увеличение часов в дате


Сообщений в теме: 7

#1 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 26 Май 2014 - 10:02

Как правильно прописать-чтобы в поле проставилась текущая дата+1 час?
$line['Дата контакта']=date("Y-m-d H:i:s", mktime(0,0,0,date("m"),date("d"),date("Y"),date("H"),date("i")+1,date("s")));
Так видимо некорректно,поле обнуляется

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Май 2014 - 10:16

$line['Дата контакта'] = date("Y-m-d H:i:s", mktime(date("H")+1,date("i"),date("s"),date("n"),date("j"),date("Y")));

Описание функции mktime

Там кстати написано что можно опускать аргументы справа, если они равны текущим времени/дате. Поэтому можно и так:

$line['Дата контакта'] = date("Y-m-d H:i:s", mktime(date("H")+1));


#3 Dinara

    Активный участник

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 26 Май 2014 - 10:59

Благодарю)))))

#4 lenar

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина

Отправлено 02 Сентябрь 2015 - 18:58

$novd = date("d.m.Y", mktime(date("m")+1));
$tekd = date("d.m.Y");

if ($novd > $tekd) {
$line['Текст заявки'] = 'получилось!';
}
else {
$line['Текст заявки'] = 'не получилось';
}

у меня постоянно выдает "не получилось". В чем причина?

#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Сентябрь 2015 - 09:22

В том, что вы сравниваете строки, а не "даты", как вам кажется. В PHP нет отдельного типа "дата", есть числовое или строковое представление дат. В данном случае, для разных месяцев или годов у вас будет неверное условие, например "01.02.2015" будет меньше чем "31.01.2015" (хотя по смыслу должно быть наоборот), т.к. идет посимвольное сравнение строк. Если вы хотите корректного сравнения, то строковое представление должно быть иным, адекватным старшинству частей даты, например:

$novd = date("Y-m-d", mktime(date("m")+1));
$tekd = date("Y-m-d");

if ($novd > $tekd) {
    $line['Текст заявки'] = 'получилось!';
}
else {
    $line['Текст заявки'] = 'не получилось';
}


#6 lenar

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина

Отправлено 03 Сентябрь 2015 - 10:21

Спасибо за совет по корректному сравнению!
Проблема еще в том, что в коде:
$novd = date("Y-m-d", mktime(date("m")+1));
месяц не изменяется.
Вроде как функцию правильно использую

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Сентябрь 2015 - 10:27

Нет, не совсем правильно используете. В mktime первым аргументом идут часы, месяц только на четвертом месте.

#8 lenar

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина

Отправлено 03 Сентябрь 2015 - 10:46

Просмотр сообщенияCbCoder (03 Сентябрь 2015 - 10:27) писал:

Нет, не совсем правильно используете. В mktime первым аргументом идут часы, месяц только на четвертом месте.
Разобрался) Спасибо!





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных