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

Форум PHP

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

 

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

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

тема: mktime преобразование в формат UNIX
 
 автор: OLi   (28.04.2011 в 03:03)   письмо автору
 
 

Имею:
$data="29.04.2011";
$min="17:16:17";

$arr_date=explode(".",$data);
$arr_min=explode(":",$min);

echo $date_end=$arr_min[0].','.$arr_min[1].','.$arr_min[2].','.$arr_date[1].','.$arr_date[0].','.$arr_date[2];
// Дает 17,16,17,04,29,2011

echo $date_end=mktime($date_end); // Дает 2011.04.28, 17:00:45  при выводе  1303995645    - последние цифры увеличиваются...

$new_date=date('F d H i s',$date_end);

Преобразовываю дату и время в формат UNIX для занесения в базу

Мне надо в обратную сторону из Unix вывести дату и намеченное время 17:16:17

  Ответить  
 
 автор: cheops   (28.04.2011 в 08:52)   письмо автору
 
   для: OLi   (28.04.2011 в 03:03)
 

Для этого удобно воспользоваться функцией date(), которая в первом параметре принимает строку формата, а во втором параметре дату в UNIXSTAMP-формате (если он не указывается берется текущее время).

  Ответить  
 
 автор: OLi   (28.04.2011 в 11:48)   письмо автору
 
   для: cheops   (28.04.2011 в 08:52)
 

Можете пример привести...моя задача изначально перевести 29.04.2011 17:34:00 в unix для занесения в базу, а затем при выводе получить эту дату и время

  Ответить  
 
 автор: lotanaen   (28.04.2011 в 12:11)   письмо автору
 
   для: OLi   (28.04.2011 в 11:48)
 

date('d.m.Y H:i:s',$date);
где $date время в unix

  Ответить  
 
 автор: Lotanaen   (28.04.2011 в 12:16)   письмо автору
 
   для: OLi   (28.04.2011 в 11:48)
 


$data="29.04.2011";
$min="17:16:17";

$arr_date=explode(".",$data);
$arr_min=explode(":",$min);


echo $date_end=mktime($arr_min[0],$arr_min[1],$arr_min[2],$arr_date[1],$arr_date[0],$arr_date[2]);



$new_date=date('d.m.Y H:i:s',$date_end);

  Ответить  
 
 автор: OLi   (29.04.2011 в 03:23)   письмо автору
 
   для: Lotanaen   (28.04.2011 в 12:16)
 

Спасибо...и еще
Есть в unix дата начала и дата окончания
Хочу высчитать продолжительность от начала до окончания
date date_end
1304028000 1304036254

echo $long=$show_prew['date_end']-$show_prew['date'];


На выходе получаю: -1304028000
$long_time=date('h i s',$long); //04 00 00

  Ответить  
 
 автор: cheops   (29.04.2011 в 09:04)   письмо автору
 
   для: OLi   (29.04.2011 в 03:23)
 

Выведите значения переменных $show_prew['date_end'] и $show_prew['date'], скорее всего $show_prew['date_end'] пустая. Нужно выяснить почему.

  Ответить  
 
 автор: OLi   (29.04.2011 в 15:00)   письмо автору
 
   для: cheops   (29.04.2011 в 09:04)
 

Да, была пустая...но при таком выводе, результат неточный:
$long=$show_prew['date_end']-$show_prew['date'];
$long_time=date('h i s',$long);



есть дата начала 1304028000    дата конца 1304036254   делаю разницу $long=$show_prew['date_end']-$show_prew['date'];
$long_time=date('h i s',$long); // для получения продолжительности   получаю некорректный $long_time    //  05 ч 17 мин  34 с       а на самом деле 2 ч 17 мин

  Ответить  
 
 автор: cheops   (29.04.2011 в 15:25)   письмо автору
 
   для: OLi   (29.04.2011 в 15:00)
 

При помощи date у вас отформатировать эту дату уже не получится, date() ожидает дату в UNIXSTAMP-формате, здесь же разница в секундах.

  Ответить  
 
 автор: OLi   (29.04.2011 в 15:28)   письмо автору
 
   для: cheops   (29.04.2011 в 15:25)
 

Как же быть?

  Ответить  
 
 автор: cheops   (29.04.2011 в 15:31)   письмо автору
 
   для: OLi   (29.04.2011 в 15:00)
 

Т.е. действуют примерно так
<?php
  $begin 
1304028000;
  
$end 1304036254;
  echo 
dateformat($end $begin);

  function 
dateformat($time)
  {
    
$minutes $hours $days 0;
    
$minutes intval($time 60);
    if(
$minutes 60)
    {
      
$hours intval($minutes 60);
      
$minutes $time 60;
    }
    if(
$hours 24)
    {
      
$days intval($hours 24);
      
$hours $hours 24;
    }
    return 
"$days сут. $hours час. $minutes мин.";
  }
?>

  Ответить  
 
 автор: OLi   (29.04.2011 в 15:42)   письмо автору
 
   для: cheops   (29.04.2011 в 15:31)
 

В часах -старт, если перевести в 02:00:00, конец в 04:17:34
На выходе показывает разницу в: 2 час 34 мин

  Ответить  
 
 автор: Lotanaen   (29.04.2011 в 17:52)   письмо автору
 
   для: OLi   (29.04.2011 в 15:42)
 

Это в каком коде-то?

  Ответить  
 
 автор: OLi   (29.04.2011 в 19:54)   письмо автору
 
   для: Lotanaen   (29.04.2011 в 17:52)
 

В том - который приведен выше

  Ответить  
 
 автор: cheops   (29.04.2011 в 21:36)   письмо автору
 
   для: OLi   (29.04.2011 в 15:42)
 

Да, есть такое дело, вот исправленный вариант
<?php
  $begin 
1304028000;
  echo 
"begin = ".date("Y-m-d H:i:s"$begin)."<br>";
  
$end 1304036254;
  echo 
"end = ".date("Y-m-d H:i:s"$end)."<br>";
  echo 
dateformat($end $begin);

  function 
dateformat($time)
  {
    
$minutes $hours $days 0;
    
$minutes intval($time 60);
    if(
$minutes 60)
    {
      
$hours intval($minutes 60);
      
$minutes $minutes 60;
    }
    if(
$hours 24)
    {
      
$days intval($hours 24);
      
$hours $hours 24;
    }
    return 
"$days сут. $hours час. $minutes мин.";
  }
?>

  Ответить  
 
 автор: nikita2206   (30.04.2011 в 19:09)   письмо автору
 
   для: OLi   (29.04.2011 в 15:00)
 

date прибавил 3 часа. это из-за часового пояса. просто чтоб знали

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

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