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


Работа с датами


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

#1 Dinara

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

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

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

Добрый день!)
На форуме есть пример использования текущей даты+3 дня
$line['Дата'] = date ("Y-m-d 00:00:00", time() + 60*60*24*3);
А как указать +3 месяца в $line['Дата 2'] от $line['Дата 1'] ?

Сообщение отредактировал Dinara: 15 Апрель 2014 - 14:20


#2 CbCoder

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

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

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

Ну так замените 3 дня на 90, или такой вариант не устраивает?

#3 Dinara

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

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

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

Там же берется время от текущей даты, а мне нужно от даты в одном из полей. Плюс к этому есть еще вариант,когда нужно на 1год 1 месяц увеличивать..Нет чего полегче чем считать дни?)Тем более там же не угадаешь 365 или 355 дней))

#4 rarken

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

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

Отправлено 16 Апрель 2014 - 07:15

Просмотр сообщенияDinara (15 Апрель 2014 - 14:20) писал:

Добрый день!)
На форуме есть пример использования текущей даты+3 дня
$line['Дата'] = date ("Y-m-d 00:00:00", time() + 60*60*24*3);
А как указать +3 месяца в $line['Дата 2'] от $line['Дата 1'] ?

Думаю Этот код поможет
$bd = strtotime($line['Дата1']);
$line['Дата2'] = date("Y-m-d H:s:i", mktime(date("H",$bd),date("i",$bd),date("s",$bd),date("m",$bd)+3,date("d",$bd),date("Y",$bd)));
Данный код добавляет +3 месяца считываю с поля Дата1 добавляет полю дата2, 3 месяца
IF m cool stay cool

#5 CbCoder

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

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

Отправлено 16 Апрель 2014 - 08:56

Dinara, на форуме специально тема закреплена для этого: http://clientbase.ru...?showtopic=5766

#6 Dinara

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

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

Отправлено 16 Апрель 2014 - 09:02

Просмотр сообщенияrarken (16 Апрель 2014 - 07:15) писал:

Думаю Этот код поможет
$bd = strtotime($line['Дата1']);
$line['Дата2'] = date("Y-m-d H:s:i", mktime(date("H",$bd),date("i",$bd),date("s",$bd),date("m",$bd)+3,date("d",$bd),date("Y",$bd)));
Данный код добавляет +3 месяца считываю с поля Дата1 добавляет полю дата2, 3 месяца
Получилось! Спасибо!) сохраню себе и этот код ;-)

#7 Dinara

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

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

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

Просмотр сообщенияCbCoder (16 Апрель 2014 - 08:56) писал:

Dinara, на форуме специально тема закреплена для этого: http://clientbase.ru...?showtopic=5766
теперь буду знать) По поиску почему-то не вышла эта тема(

#8 CbCoder

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

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

Отправлено 16 Апрель 2014 - 09:08

Так она закреплена сверху, искать не нужно.

#9 Dinara

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

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

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

Кстати,такой вот интересный вопрос по датам тоже. есть вычисление
if ((($line['Время добавления счета']) > ($line['Дата поступления'])) and ($line['Дата поступления']!="0000-00-00") and (($line['Время добавления счета']) !=($line['Дата поступления'])))
{
echo "<script>alert(' ВНИМАНИЕ!												   Дата поступления средств не может быть раньше даты создания счета. Внесите правильную дату');</script>";
$line['Дата поступления']=date("Y-m-d");
}
Работает при сохранении записи в таблице.
Условие:Время добавления счета=7 апреля, Дата поступления-тоже 7 апреля. (вносить можно только те даты, которые позже 7 апреля, включительно, т.е 7ое, 8ое и т.д)
НО! Если в настройках доступа убрать отображение поля "Время добавления счета"-тогда сработает это предупреждение (хотя не должно по сути, ведь по условиям в тот же день прийти оплата может-когда и создали счет), а если включить отображение при добавлении записи (то есть на редактирование)-тогда предупреждения не будет (что правильно).
Не могу понять почему в первом случае срабатывает.. http://take.ms/UOzD8

#10 CbCoder

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

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

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

У вас стоит условие "Время добавления счета больше Дата поступления", поэтому о "включительно" речи идти не может. Для "включительно" должно быть "больше или равно".

#11 Dinara

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

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

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

Может конечно я не так понимаю,но..
Это предупреждение должно быть только в том случае, если дата поступления меньше времени добавления счета..если же равно-тогда не должно быть предупреждения..зачем ставить знак равенства?
для примера
7 апреля (время добавления счета) > 7 апреля (дата поступления)
Условие не выполняется, значит не должно быть сообщения,так?

#12 CbCoder

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

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

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

Ну вы же сами понимаете, что условие 7 > 7 не выполняется, выполняется только 7 >= 7

#13 Dinara

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

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

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

Ну почему в одном случае вычисление срабатывает,а в другом нет тогда?Зависит от отображения поля при добавлении записи или не отображения

#14 CbCoder

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

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

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

Про второй случай не совсем понял. При добавлении как правило вычисления вообще не срабатывают.

#15 Dinara

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

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

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

Вариант 1-поле "Время добавления счета" невидимое при добавлении записи через доп.действие (по условию дата создания счета=7 числа и дата поступления=7 числа)
?зображение
?зображение
?зображение


Теперь если время добавления видимое при добавлении записи
?зображение
?зображение

#16 Dinara

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

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

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

Почему же тогда такой баг?и как правильно прописать условие?ибо >= то не подходит тогда..вернее подходит в одном случае, а в другом нет.я запуталась(

#17 Dinara

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

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

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

И да, доп.действие переносит Время добавления счета
$schet['Номер'] = $ID;
$schet['Время добавления счета'] = $line['Время добавления'];
$schet['Номер позиций']='';

$new_id = insert_query($schet, "Позиции счета");
echo "<script>location.href='".$config["site_root"]."/view_line.php?table=74&line=".$new_id."&edit_mode&back_url=".$base64_current_url."'</script>";
То есть оно сразу проставляется

#18 CbCoder

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

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

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

Не понял, причем тут тогда добавление, если на картинке написано "изменение"? Хотя, это к делу отношения не имеет, просто вы меня запутали этим.

Теперь по сути. Когда вы копируете доп.действием время добавления, оно копируется вместе с часами, минутами и секундами. Когда же вы делаете поле доступным для редактирования и сохраняете, оно у вас сохраняется без часов-минут-секунд, т.к. поле "Время добавления счета" у вас с типом дата без времени. Именно отсюда и истоки разной работы вычисления. Поля с чистой датой и и с датой-временем лучше вообще не сравнивать из-за таких эффектов, т.к. форматы несколько разные.

Решение: при копировании поля времени добавления счета убирайте время, сохраняя только дату. И лучше поле тоже переименовать в "Дату добавления счета" во избежание недоразумений в будущем.

$schet['Дата добавления счета'] = substr($line['Время добавления'],0,10);

Ваше вычисление:

if ($line['Дата поступления'] < $line['Дата добавления счета'])
{
  echo "<script>alert(' ВНИМАНИЕ!																							Дата поступления средств не может быть раньше даты создания счета. Внесите правильную дату');</script>";
  $line['Дата поступления'] = date("Y-m-d");
}

В коде убрал лишние условия и лишние скобки (вы слишком избыточно их ставите)

#19 bottrop

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

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

Отправлено 18 Апрель 2016 - 14:14

Доброго дня. Такой вопрос. Как сделать вычисление по датам рождения сотрудников.
Есть поля "ДР", "Зодиак", "Год". Как сделать, чтобы Зодиак выбирался исходя из даты и месяца, а поле год вычислялось исходя из года?
Например: ДР=20.11.1973, так как дата лежит в пределах с 24.10-22.11, то поле Зодиак =Скорпион, и так как год 1973, то поле Год=Бык.

Такое возможно? Как реализовать?





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

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