Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2008, 23:41   #1
mrtnt
 
Аватар для mrtnt
 
Регистрация: 13.09.2008
Сообщений: 4
По умолчанию Операции с датами.

Вот сколько я прошарил по инету, но готового решения не нашел. Значит вопрос такой...

Представляем новостной портал. Естественно в таблице есть дата добавления статьи. Значит вывести дату нужно следующим образом: если дата статьи совпадает с сегодняшней датой, то в поле должно выводиться "Статья добавлена: сегодня". Вот с этим проблем нет:

PHP код:
$result mysql_query("SELECT date FROM news",$db);
$myrow mysql_fetch_array ($result);

if (
$myrow[date] == date('Y-m-d')) 
{
   echo 
"Статья добавлена: сегодня";
}
else
{
   echo 
"Статья добавлена: date('Y-m-d')";

а проблема ничинается вот тут. Как сделать вывод "Статья добавлена: вчера", или "Статья добавлена: позавчера"... Т.е как например из даты убавить один день, а потом сравнить. Можно конечно разбить дату на составляющие, но появляется несколько проблем: 1. если сегодня бало 01 число, то вчера 31, а также с месяцами и годами. 2.проблема разного колличества дней в месяце и даже годе. В общем как лучше поступить в данной ситуации?
mrtnt вне форума Ответить с цитированием
Старый 17.09.2008, 01:07   #2
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

PHP код:
<?php

// забирает текущее время в массив
$timestamp time();
echo 
$timestamp;
echo 
'<p>';
$date_time_array getdate($timestamp);

$hours $date_time_array['hours'];
$minutes $date_time_array['minutes'];
$seconds $date_time_array['seconds'];
$month $date_time_array['mon'];
$day $date_time_array['mday'];
$year $date_time_array['year'];

// используйте mktime для обновления UNIX времени
$timestamp mktime($hours,$minutes,$seconds,$month,$day,$year);
echo 
$timestamp;

?>
Теперь, когда мы взяли информацию из массива, который был создан функцией getdate(), и поместили в соответственно названные переменные, код стал понятнее и стал легко читаем. Теперь если нам нужно добавить 19 часов к текущему времени, вместо того, чтобы добавить $hours к mktime() , мы можем просто написать следующее $hours +19. Функция mktime() сама сделает переxод на следующий день.

http://phpclub.ru/detail/article/date_stuff
Viteef вне форума Ответить с цитированием
Старый 17.09.2008, 10:35   #3
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

В php есть ф-я для этого случая
PHP код:
<?php
$date 
= new DateTime("2006-12-12");
$date->modify("+1 day");
echo 
$date->format("Y-m-d");
?>
2006-12-13

будьте внимательны версия PHP 5.1.0
Стрелок-охотник

Последний раз редактировалось mv28jam; 17.09.2008 в 10:55. Причина: чуть не забыл!
mv28jam вне форума Ответить с цитированием
Старый 20.09.2008, 01:16   #4
mrtnt
 
Аватар для mrtnt
 
Регистрация: 13.09.2008
Сообщений: 4
По умолчанию

Большое спасибо! Все работает просто супер!
mrtnt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как задать интервал между датами в фильтре Леон Microsoft Office Access 2 22.10.2008 11:16
Работа с датами Ozerich Общие вопросы Delphi 6 07.08.2008 10:03
Работа с датами SanekIrk Общие вопросы Delphi 5 11.07.2008 22:01
работа с датами kolduev Помощь студентам 6 27.02.2008 19:54
Разница между датами deenka БД в Delphi 3 31.01.2008 13:21