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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Красиво выводим время

Сообщения:  [1-10]   [11-20] 

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

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

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

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

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

  Ответить  
 
 автор: 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;
}

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

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

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

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

  Ответить  
 
 автор: 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:01)   письмо автору
 
   для: Eugene77   (12.10.2008 в 20:05)
 

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

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

  Ответить  
 
 автор: 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);
}

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

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

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

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

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

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

  Ответить  

Сообщения:  [1-10]   [11-20] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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