Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
2 / 2 / 2
Регистрация: 27.12.2012
Сообщений: 80

Сравнение дат (разные форматы)

01.01.2014, 03:12. Показов 1314. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В таблицу циклом выводится инфа из БД. Есть поле "дата" (лежит в БД в "русском" формате dd.mm.yy). Надо подсвечивать строки с датой старше 20 дней.

Проблема в том, что сравнивать приходится с датой в "американском" формате yy.mm.dd... Попробовал перевести свою дату в такой формат, но дальше не получается...

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$alert_date=date("yymmdd",strtotime("-20 day"));
while ($row = mysql_fetch_array($res)) {
  $conv_date1=($row['creatdate']);
  $tmp = explode('.',$conv_date1);
  $day = (int)$tmp[0];
  $month = (int)$tmp[1];
  $year = $tmp[2];
  $conv_date2=$year,$month,$day;
  if($conv_date2<=$alert_date){$bg='#ff9999';}else{$bg='#fff';}?>
  <tr>
    <td valign="top" <? echo ("bgcolor='".$bg."'"); ?>><? echo (" ".$row["creatdate"]." "); ?></td>
    <td valign="top" <? echo ("bgcolor='".$bg."'"); ?>><? echo (" ".$row["info"]." "); ?></td>
  </tr>
<? } ?>
Ну, во-первых, это
PHP
1
$conv_date2=$year,$month,$day;
понятное дело, не работает. Как правильно?

А во-вторых, здесь
PHP
1
 if($conv_date2<=$alert_date)
цикла то нет. Только по последней строчке будет работать...

Или какие еще есть варианты? Помогайте, плиз...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.01.2014, 03:12
Ответы с готовыми решениями:

Сравнение дат
одна из полей таблицы имеет дату в форме типа &quot;10:11:45&quot; мне надо получать из таблицы записи в которых минуты и секунды совпвдвют с...

Сравнение дат
Здравствуйте.Возникла проблема с датами. Поле типа datetime.Нужно выбрать за какой то срок. Например больше месяца. Пишу так $a =...

Сравнение дат поэлементно
Здравствуйте, есть необходимость узнать, принадлежит ли дата выбранному диапазону дат. Даты имеют формат date(&quot;d-m&quot;,...

5
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.01.2014, 09:31
Цитата Сообщение от alsio Посмотреть сообщение
Проблема в том, что сравнивать приходится с датой в "американском" формате
А зачем в американском? По-русски нельзя написать?
PHP
1
date( "d.m.Y" );
0
2 / 2 / 2
Регистрация: 27.12.2012
Сообщений: 80
01.01.2014, 15:00  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
А зачем в американском? По-русски нельзя написать?
Написать можно, а сравнить нельзя, ибо сравнение идет по американскому формату (заложено программно). Т.е. сначала сравниваются первые две цифры, потом вторые, потом третьи (вернее, сначала дата переводится в unix-формат, но мысль та-же). Т.о. 20.11.13 будет больше 10.12.13...
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.01.2014, 15:18
Ну попробуйте так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$alert_date=date("y.m.d",strtotime("-20 day"));
while ($row = mysql_fetch_array($res)) {
  $conv_date1=($row['creatdate']);
  $tmp = explode('.',$conv_date1);
  $day = (int)$tmp[0];
  $month = (int)$tmp[1];
  $year = $tmp[2];
  $conv_date2=$year,$month,$day;
  if(strtotime($conv_date2)<=strtotime($alert_date)){$bg='#ff9999';}else{$bg='#fff';}?>
  <tr>
    <td valign="top" <? echo ("bgcolor='".$bg."'"); ?>><? echo (" ".$row["creatdate"]." "); ?></td>
    <td valign="top" <? echo ("bgcolor='".$bg."'"); ?>><? echo (" ".$row["info"]." "); ?></td>
  </tr>
<? } ?>
0
2 / 2 / 2
Регистрация: 27.12.2012
Сообщений: 80
01.01.2014, 15:33  [ТС]
Вряд ли, но попробую, конечно. Однако это:
PHP
1
$conv_date2=$year,$month,$day;
неправильно. Как в переменную $conv_date2 запихать три переменные подряд? Пробовал с echo - не получилось.
0
2 / 2 / 2
Регистрация: 27.12.2012
Сообщений: 80
02.01.2014, 16:54  [ТС]
Итак, проблема решена! Причем БЕЗ переформатирования типа таблиц с датами в DATE. В БД все даты хранятся по-прежнему в русском формате 02.01.14.

Исправно работающий код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$alert_date=date("ymd",strtotime("-20 day"));
  while ($row = mysql_fetch_array($res)) {
  $conv_date1=($row['creatdate']);
  $tmp = explode('.',$conv_date1);
  $day = $tmp[0];
  $month = $tmp[1];
  $year = $tmp[2];
  $conv_date2=$year.$month.$day;
  if($conv_date2<=$alert_date){$bg='#ff9999';}else{$bg='#fff';}?>
  <tr>
    <td valign="top" <? echo ("bgcolor='".$bg."'"); ?>><? echo (" ".$row["creatdate"]." "); ?></td>
    <td valign="top" <? echo ("bgcolor='".$bg."'"); ?>><? echo (" ".$row["info"]." "); ?></td>
  </tr>
<? } ?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.01.2014, 16:54
Помогаю со студенческими работами здесь

Сравнение дат и изменение полей (БД)
Есть БД, в БД есть таблица, в таблице есть 3 поля: sn, online, online_time. В поле sn находится идентификатор пользователя, в поле online...

Сравнение дат и вывод из базы
Добрый день. Стоит такая задача (пробовал разные методы), в базе есть клиенты с определенной датой в формате (Г.М.Д), мне нужно вывести из...

Сравнение двух дат и вывод дат находящихся между ними
Здравствуйте! Тут такое дело, вводятся две определенные ДАТЫ в Edit1 и Edit2 в формате ДД.ММ.ГГГГ, нужно найти все ДАТЫ, которые...

Разные форматы в адсенсе
По правилам программы иметь разные по размеру блоки на одной странице нельзя, но я тем не менее вижу много сайтов с разными форматами....

разные форматы картинок
Есть небольшой скрипт. // &lt;?php // $image = 'screen.gif'; // $img = imagecreatefromgif( $image ); // if ( !is_resource( $img ) ) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru