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


Операции с датами


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

#1 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 18 Март 2014 - 10:19

Хотелось бы узнать на счет работы с датами.
К примеру у меня есть поле с датой и есть поле с кол-вом дней как можно их сложить?
То есть я делаю:

$line['Дата окончания'] = $line['Дата'] + $line['Кол-во дней'];

Я знаю что программа не может понять что я делаю так как число не может определить к чему сложить.

Можете описать данный код?
IF m cool stay cool

#2 CbCoder

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

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

Отправлено 18 Март 2014 - 11:06

$line['Дата окончания'] = date("Y-m-d H:s:i", strtotime($line['Дата']) + $line['Кол-во дней']*86400);


#3 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 19 Март 2014 - 12:55

Следующий вопрос:
у меня есть поле дата начала и дата окончания.
При вводе в поле дата начало автоматический должно заполняться в поле дата окончания +10 месяцев.
Пример:
Дата начала: Дата окончания:
19.03.2014 19.01.2015
IF m cool stay cool

#4 CbCoder

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

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

Отправлено 19 Март 2014 - 13:14

$bd = strtotime($line['Дата начала']);
$line['Дата окончания'] = date("Y-m-d H:s:i", mktime(date("H",$bd),date("i",$bd),date("s",$bd),date("m",$bd)+10,date("d",$bd),date("Y",$bd)));


#5 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 01 Апрель 2014 - 12:23

Спасибо большое все заработала. )))
IF m cool stay cool

#6 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 17 Апрель 2014 - 11:21

Столкнулся с такой проблемой. Есть поля; Дата рождения, Возрос. Как сделать так что бы каждый месяц поле возраст менялось, как это нужно делать я думал может кронам но откуда он будет брать текущую дату так и не понял.
IF m cool stay cool

#7 CbCoder

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

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

Отправлено 17 Апрель 2014 - 14:21

Крон не нужен, можно написать вычисление на отображение поля Возраст:

$line['Возраст'] = floor((time() - strtotime($line['Дата рождения'])) / (86400*365.25));


#8 rarken

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

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 18 Апрель 2014 - 13:03

Просмотр сообщенияCbCoder (18 Апрель 2014 - 12:53) писал:

$line['Возраст'] = floor((time() - strtotime($line['Дата рождения'])) / (86400*365.25));
Все заработала спасибо

Сообщение отредактировал rarken: 18 Апрель 2014 - 13:06

IF m cool stay cool

#9 Dinara

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

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

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

КАк можно сравнить две даты для выполнения условия?
Дата1
Дата2
Если Дата2 больше (или равно) чем Дата1 на месяц (и более,соответственно), то...

#10 CbCoder

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

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

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

Вы же знаете уже вроде как месяц к дате прибавлять? Соответственно, сравниваете "если Дата2 >= Дата1 + 1 месяц".

#11 starmax

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 03 Июнь 2014 - 08:55

Подскажите пжста, где ошибка?
нужны записи за текущий месяц и год
(year(left(`дата выдачи`,10))=year(curdate())) and (month(left(`дата выдачи`,10))=month(curdate()))

#12 CbCoder

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

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

Отправлено 03 Июнь 2014 - 10:20

Намудрили что-то, left тут лишний, хотя по идее и с ним работать должно. Вот тема об этом: http://clientbase.ru...?showtopic=5652

#13 starmax

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 03 Июнь 2014 - 11:50

Спасибо, разобрался

#14 zelenayagorka

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений

Отправлено 17 Июнь 2014 - 15:04

подскажите пожалуйста, у меня точно такой же вопрос.
есть дата заезда
и нужно сделать дату выезда, чтобы по умолчанию было +1 день

#15 CbCoder

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

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

Отправлено 17 Июнь 2014 - 16:53

Цитата

есть дата заезда
и нужно сделать дату выезда, чтобы по умолчанию было +1 день

Смотрим самый первый пример в теме и заменяем $line['Кол-во дней'] на нужное вам число дней, т.е. в данном случае - 1:

$line['Дата выезда'] = date("Y-m-d H:s:i", strtotime($line['Дата заезда']) + 1*86400);


#16 zelenayagorka

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений

Отправлено 18 Июнь 2014 - 08:15

$line['Дата выезда'] = date("Y-m-d H:s:i", strtotime($line['Дата заезда']) + 1*86400);

Я вписал данную строчку в поле JavaScript
в итоге у меня при создании заявки дата заезда и дата выезда получаются одинаковыми.
а при изменении даты заезда дата выезда не меняется

#17 zelenayagorka

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений

Отправлено 18 Июнь 2014 - 08:20

Спасибо, всё получилось! нужно было оставить только вычесление, а в JavaScript ничего не писать

#18 zelenayagorka

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений

Отправлено 18 Июнь 2014 - 08:26

Теперь у меня такой вопрос, как сделать так, что если заезд не на 1 сутки, чтобы можно было исправить. Сейчас при таком вычислении если я пытаюсь исправлять например на 2 суток, то он мне автоматически меняет на 1 сутки.
мне нужно чтобы рассчитывалось так:
по умолчанию к дате заезда прибавлялось+1 день.
Если люди бронируют больше чем 1 день, то вручную выбирается дата выезда.
Если люди переносят дату заезда на другую (менеджер изменяет это поле), то дата выезда тоже должна изменяться

Сообщение отредактировал zelenayagorka: 18 Июнь 2014 - 08:32


#19 zelenayagorka

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений

Отправлено 18 Июнь 2014 - 08:34

Всё, спасибо, я настроил!
нужно в вычислениях было поставить Вычислять при условии изменении поля дата заезда. А я сначала поставил еще "сохранении в таблице"

#20 calebfreeman

    Участник

  • Пользователи
  • PipPip
  • 28 сообщений

Отправлено 26 Июнь 2014 - 15:51

Подскажите по операция с датами тип поля Date.

Делаю вставку

$sqlQuery = "UPDATE `".DATA_TABLE."321` SET `f4651`='Нет', 'f4661'='0', 'f4671'='0' WHERE `id`='$ID'"; // обнуляем строку из таблицы "В работе" (id этой таблицы - 321), откуда перенесли информацию
sql_query($sqlQuery);

Пробовал вставить и текущую дату.
Все время ругается ни синтаксическую ошибку именно на полях типа "Дата"





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

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