Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как узнать, последний ли день в этом месяце
 
 автор: OLi   (31.12.2011 в 19:17)   письмо автору
 
 

Скажем 31.12.11 в 12 00 мне надо вывести echo 'Поздравлем'; т-е как универсально определить, что это последний день месяца в точности до часов и минут?
Как идея пришла - сравнивать с 28 30 31 как месяцами и отдельно сравнивать с часами и минутами текущую дату...

  Ответить  
 
 автор: cheops   (31.12.2011 в 19:21)   письмо автору
 
   для: OLi   (31.12.2011 в 19:17)
 

У функции date() есть специальный флаг t, который позволяет узнать сколько точно дней в месяце.
<?php
  
echo date('t');
?>

  Ответить  
 
 автор: OLi   (31.12.2011 в 19:23)   письмо автору
 
   для: cheops   (31.12.2011 в 19:21)
 

Т-е сравнивать как я и предложил?

  Ответить  
 
 автор: cheops   (31.12.2011 в 19:24)   письмо автору
 
   для: OLi   (31.12.2011 в 19:23)
 

Да, только сравнивать не с 28, 30, 31, а при помощи условии date('t') == date('d')

  Ответить  
 
 автор: OLi   (31.12.2011 в 19:28)   письмо автору
 
   для: cheops   (31.12.2011 в 19:24)
 

Да, понял. Спасибо

  Ответить  
 
 автор: OLi   (31.12.2011 в 20:03)   письмо автору
 
   для: OLi   (31.12.2011 в 19:28)
 

Получается такое:
<?
$date_do
=date("Y-m-d-h-i-s");
$exp_date=explode("-",$date_now);
if (
date('t') == $exp_date[2] && $exp_date[3] == '12' && $exp_date[4]=='59' && $exp_date[5]=='59') {



$select_best_bitle=mysql_query("select * from `bon` WHERE start_time>=$date_ot AND  start_time<=$date_do order by votes desc")

}


?>

Как мне по наступлению нового месяца узнать первое число предыдущего месяца, т-е вывести записи за месяц?

  Ответить  
 
 автор: cheops   (31.12.2011 в 20:06)   письмо автору
 
   для: OLi   (31.12.2011 в 20:03)
 

Поле start_time в таблице bon у вас что из себя представляет?

  Ответить  
 
 автор: OLi   (31.12.2011 в 20:16)   письмо автору
 
   для: cheops   (31.12.2011 в 20:06)
 

varchar 255

2011-12-31-04-12-12

  Ответить  
 
 автор: cheops   (31.12.2011 в 20:25)   письмо автору
 
   для: OLi   (31.12.2011 в 20:16)
 

А почему в таком формате? Если бы был нормальный календарный формат, можно было бы двумя условиями вывести данные за месяц, здесь, конечно, тоже можно извернуться, но работать будет скорее всего медленнее.
Я бы начал бы отталкиваться от функции mktime(), так как она оперирует отдельными компонентами, у вас всегда есть возможность отнять от месяца единицу, а день назначить на 1, чтобы получить начало предыдущего месяца.

  Ответить  
 
 автор: OLi   (31.12.2011 в 20:29)   письмо автору
 
   для: cheops   (31.12.2011 в 20:25)
 

В каком тогда лучше формате хранить? в секундах?

  Ответить  
 
 автор: cheops   (31.12.2011 в 20:33)   письмо автору
 
   для: OLi   (31.12.2011 в 20:29)
 

Можно и в DATETIME, можно в секундах. Да и этот формат в принципе нормален, только вам с mktime() придется много работать, более того, сначала формировать временную метку при помощи mktime(), а потом её форматировать при помощи date(). Ничего страшного, но несколько неудобно и чревато ошибками, тем более у mktime() американский формат - сначала месяц, потом день.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования