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

Форум PHP

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

 

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

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

тема: Красиво выводим время
 
 автор: sl1p   (09.10.2008 в 02:11)   письмо автору
 
 

..
подскажите как попроще сделать:
есть таймстамп, его нужно вывести следущим образом:
если например минут меньше чем 60 пишем - столько-то минут.
если же часов меньше 24 пишем - столько-то часов и столько-то минут.
ну и подобным образом выводить дни,месяцы.

  Ответить  
 
 автор: sl1p   (09.10.2008 в 12:16)   письмо автору
 
   для: sl1p   (09.10.2008 в 02:11)
 

^

  Ответить  
 
 автор: sl1p   (11.10.2008 в 00:58)   письмо автору
 
   для: sl1p   (09.10.2008 в 12:16)
 

ни у кого нет идей что-ли?(

  Ответить  
 
 автор: BinLaden   (11.10.2008 в 01:30)   письмо автору
 
   для: sl1p   (11.10.2008 в 00:58)
 

Сначала кажется, что Вы хотите вывести по-особому промежуток времени или длительность чего-то, а потом, когда натыкаешься на слово "месяцы", то становится ясно, что понял не так.

  Ответить  
 
 автор: sl1p   (11.10.2008 в 04:31)   письмо автору
 
   для: BinLaden   (11.10.2008 в 01:30)
 

ну даже х3 как нормально объяснить..

ну вот например что я делаю:

это нужно при бане пользователя.
я пишу в базу таймстамп когда забанили
и таймстамп + время бана

так вот мне нужно как-то выводить оставшееся время бана.

чтото нв вроде: 1час 40мин 30сек

но как это реализовать ума не приложу.
и было бы круто както не пхп функцией а мб формулой чтоли какойто ибо нужно чтобы время обновлялось с помощью жс..:)

  Ответить  
 
 автор: cheops   (11.10.2008 в 14:57)   письмо автору
 
   для: sl1p   (11.10.2008 в 04:31)
 

Время бана в каком формате? Оно тоже в базе данных находится?

  Ответить  
 
 автор: sl1p   (11.10.2008 в 16:46)   письмо автору
 
   для: cheops   (11.10.2008 в 14:57)
 

да всё в бд и таймстамп..

  Ответить  
 
 автор: virtus1k   (11.10.2008 в 15:28)   письмо автору
 
   для: sl1p   (11.10.2008 в 04:31)
 

ну так а в чем проблема? пишешь время бана в одну ячейку - в другу - время РАЗбана - потом отнимаешь и выводишь :) или тебе не ясно как таймстамп отнять от таймстамп ?

  Ответить  
 
 автор: BinLaden   (11.10.2008 в 17:17)   письмо автору
 
   для: virtus1k   (11.10.2008 в 15:28)
 

2 virtus1k: проблема автора в том, что нужно вывести количество месяцев (целое число) до определенной даты.
Теперь Вам понятно?

  Ответить  
 
 автор: Eugene77   (11.10.2008 в 17:55)   письмо автору
 
   для: BinLaden   (11.10.2008 в 17:17)
 

Так это вроде не очень простой вопрос.
Функцию длинную писать придётся.
А если ещё и на JS чтоб тикало, так это повозиться придётся.

  Ответить  
 
 автор: sl1p   (11.10.2008 в 19:10)   письмо автору
 
   для: Eugene77   (11.10.2008 в 17:55)
 

Ну я ведь попросил помочь реализовать, а не говорить о том как это сложно.
Такое часто где-то видел(уже не помню где), значит возможно как-то:)

  Ответить  
 
 автор: Eugene77   (11.10.2008 в 19:19)   письмо автору
 
   для: sl1p   (11.10.2008 в 19:10)
 

Если где-то видели, то хотя бы яву хорошо было бы здесь опубликовать. К ней уже проще дописать PHP. А так получается слишком объёмная задачка. Ну, если у кого-то время найдётся, то сделает. Я лично с таким объёмом кода проковыряюсь некий отрезок времени. Его у меня сейчас нет. Если бы вы сами часть уже написали, которую можете, то тогда проще было бы помочь доделать.

  Ответить  
 
 автор: sl1p   (11.10.2008 в 19:24)   письмо автору
 
   для: Eugene77   (11.10.2008 в 19:19)
 

Написал же что не помню.Я же не думал что пригодится)
зы.Мне то не трудно ковыряться, но я даже не знаю с чего подойти, вдруг начну велосипед делать)

  Ответить  
 
 автор: Eugene77   (12.10.2008 в 20:05)   письмо автору
 
   для: sl1p   (11.10.2008 в 19:24)
 

Вот для первого шага функция нашлась (не моя), но выглядит красиво

<?
function CalcElapsedTime($time)
{
    if((
$time = (int) $time) === 0) return '0 cекунд';

    
$diff $time;
    
$divs = array(60,60,24,365);
    
$ret = array();

    
$elements = array(
        
'years' => array(0,"год","года","лет"),
        
'days' => array(0,"день","дня","дней"),
        
'hrs' => array(0,"час","часа","часов"),
        
'mins' => array(0,"минута","минуты","минут"),
        
'secs' => array(0,"секунда","секунды","секунд"),
    );

    foreach(
$elements as $k => $v) {
        
$tmp $diff;
        foreach(
$divs as $div$tmp /= $div;
        if(
$elements[$k][0] = floor($tmp)) {
            
$ret[] = $elements[$k][0].' '.call_user_func_array('PluralForm',$elements[$k]);
            
$tmp $elements[$k][0];
            foreach(
$divs as $div$tmp *= $div;
            
$diff -= $tmp;
        }
        
$divs array_slice($divs,0,-1);
    }

    return 
join(" ",$ret);
}

  Ответить  
 
 автор: Trianon   (12.10.2008 в 21:01)   письмо автору
 
   для: Eugene77   (12.10.2008 в 20:05)
 

>Вот для первого шага функция нашлась (не моя), но выглядит красиво

Работает? (осторожно интересуется)

  Ответить  
 
 автор: Nemezis   (12.10.2008 в 21:06)   письмо автору
 
   для: Eugene77   (12.10.2008 в 20:05)
 

Мне кажется, что там маленького кусочка не хватает.

<?php
function pluralForm($n$form1$form2$form5) {
    
$n abs($n) % 100;
    
$n1 $n 10;
    if (
$n 10 && $n 20) return $form5;
    if (
$n1 && $n1 5) return $form2;
    if (
$n1 == 1) return $form1;
    return 
$form5;
}

Чего-то в этом духе.

  Ответить  
 
 автор: Trianon   (12.10.2008 в 21:15)   письмо автору
 
   для: Nemezis   (12.10.2008 в 21:06)
 

более точно
function pluralForm($n, $forms) 
{
   list($form0, $form1, $form2, $form5) = $forms;
  //....

и далее по Вашему тексту.

Но дело даже не в этом.
Когда год принимают равным ровнехонько 365 суткам, а время пытаются показать с точностью до секунд, это вызывает омерзение.

  Ответить  
 
 автор: Eugene77   (13.10.2008 в 18:09)   письмо автору
 
   для: Trianon   (12.10.2008 в 21:15)
 

>Когда год принимают равным ровнехонько 365 суткам, а время пытаются показать с точностью до секунд, это вызывает омерзение.

Не совсем понимаю вас. А скольким же суткам должен быть равен год?!
По идее в високосный год надо вносить поправку, но число суток должно оставаться целым...
Но функция вообще-то не для больших сроков: год в ней так - на всякий крайний случай. На год никто банить не будет.


[code]<?
function PluralForm($n, $form1, $form2, $form5)
{
$n = abs($n) % 100;
$n1 = $n % 10;
if($n > 10 && $n < 20) return $form5;
if($n1 > 1 && $n1 < 5) return $form2;
if($n1 == 1) return $form1;
return $form5;
}

  Ответить  
 
 автор: BinLaden   (13.10.2008 в 18:12)   письмо автору
 
   для: Eugene77   (13.10.2008 в 18:09)
 

> Но функция вообще-то не для больших сроков: год в ней так - на всякий крайний случай. На год никто банить не будет.

Для Вас неприлично кидаться такими предположениями :(

  Ответить  
 
 автор: Trianon   (13.10.2008 в 19:38)   письмо автору
 
   для: Eugene77   (13.10.2008 в 18:09)
 

>>Когда год принимают равным ровнехонько 365 суткам, а время пытаются показать с точностью до секунд, это вызывает омерзение.
>
>Не совсем понимаю вас. А скольким же суткам должен быть равен год?!
Правило високосных лет вроде как в первом классе проходят...

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

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