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

Форум PHP

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

 

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

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

тема: Работа с датой
 
 автор: гость   (08.11.2007 в 09:22)   письмо автору
 
 

Вообщем есть скрипт, он получает текущею дату, сравнивает ее с заложенной и если эта дата сегодня или будет завтра - выводит это, в противномслучае выводит саму дату. Скрипт ниже, кстатиработает он нормано, есть только одна неувязочка - при получении даты он получает ее так сказать в московском времени, а мне нужен час. пояс +5 часов от него или +8 от гринвича. Из-за этого идет небольшая ошибка в определении завтра и сегодня, как это решить?) Можно конечно насильно прибавлять часы , проверять, прибовлять дни и тд. Но наверное можно сделать встроенными средствами.

Сам скрипт (наверно можно было бы сделать проверку на завтра-сегодня и поизящнее, но как уж сделал)


<?
$now_d
=date("d.m.y");
$date="01.01.08";
echo 
$now_d "<br>";
//0 - день, 1 - месяц, 2 - год
$now_dm[0]=substr($now_d02);
$now_dm[1]=substr($now_d32);
$now_dm[2]=substr($now_d62);

$date_m[0]=substr($date02);
$date_m[1]=substr($date32);
$date_m[2]=substr($date62);

// сравниваем дату, если полностью совпадает, значит это сегодня
if ($now_dm[0] == $date_m[0] && 
    
$now_dm[1] == $date_m[1] &&
    
$now_dm[2] == $date_m[2]) 
 {
  
$flag='Today';
 }
else
 {
 
//увеличиваем текущее число на один и проверяем
 //есть ли такая дата, если есть - то сравниваем
 //ее с $data, если же нет - значит это был последний
 //день месяца, увеличиваем его и число приравниваем 1,
 //то же по аналогии с годом
 
++$now_dm[0];
 if (
checkdate ($now_dm[1], $now_dm[0], $now_dm[2]))
  { 
// сравниваем дату, если полностью совпадает, значит это завтра
   
if ($now_dm[0] == $date_m[0] && 
       
$now_dm[1] == $date_m[1] &&
       
$now_dm[2] == $date_m[2]) 
     {
      
$flag='Tomorrow';
     }   
  }
 else 
// нет такой даты, прибавим месяц?
  
{
   
$now_dm[0] = 1;
   ++
$now_dm[1];
   if (
checkdate ($now_dm[1], $now_dm[0], $now_dm[2]))
    { 
     if (
$now_dm[0] == $date_m[0] && 
         
$now_dm[1] == $date_m[1] &&
         
$now_dm[2] == $date_m[2]) 
       {
        
$flag='Tomorrow';
       }   
    }
   else 
//нет такой даты, прибавим год?
    
{
     
$now_dm[0] = 01;
     
$now_dm[1] = 01;
     ++
$now_dm[2];
     if (
checkdate ($now_dm[1], $now_dm[0], $now_dm[2]))
      {
       if (
$now_dm[0] == $date_m[0] && 
           
$now_dm[1] == $date_m[1] &&
           
$now_dm[2] == $date_m[2]) 
         {
          
$flag='Tomorrow';
         }   
      }
    }

 }

 if (empty(
$flag))
  {
   
$flag=$date;
  }
}
echo 
"$flag"//Выводим результат
?>

   
 
 автор: Саня   (08.11.2007 в 09:49)   письмо автору
 
   для: гость   (08.11.2007 в 09:22)
 

Можно просто определить часовую зону.
<?
ini_set
("date.timezone""Asia/Hong_Kong"); // +8
$now_d date("d.m.y");
//...

   
 
 автор: Гость   (08.11.2007 в 09:55)   письмо автору
 
   для: Саня   (08.11.2007 в 09:49)
 

Спасибо, нсчас нашел еще такое решение:

<?
$now_d
=gmdate("H:i d.m.y"mktime(date("h")+8));

Правда я не совсем понял как оно работает, поэтому упростил :)

<?
$t
time()+(60*60*8);
$now_d=gmdate("H:i d.m.y"$t);

   
Rambler's Top100
вверх

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