|
|
|
| У меня два глубеньких вопроса:
1. Как вывести дату в виде "18 июля 2007 года". Наверное, что-то типа date("d F Y", time()); только так месяц пишется по англ. языке, а мне на на русском.
2. Представим, что переменная $tstamp хранит дату в формате UNIX. И мне надо вывести её в виде:
4 часа 23 минуты
8 часов 1 минута
и т.д.
Дни, месяца, года в расчет брать не надо, так как всё будет в пределе 24 часов.
Будет отлично если есть у кого-то готовые решения, но идеи как можно реализовать, тоже не помешают.
Спасибо | |
|
|
|
|
|
|
|
для: JIEXA
(18.07.2007 в 20:40)
| | 1.
<?
echo str_replace(
array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'),
array('января','февраля','марта','апреля','мая','июня','июля',
'августа','сентября','октября','ноября','декабря'),
date("d M Y", time()));
|
2. склонение в принципе можно реализовать через массив.
Если проблема в том, чтобы вычислить часы и минуты суток, то делается это примерно так.
от таймштампа текущего времени отнимается таймштамп полуночи и делится нацело на 24 , а остаток затем на 60. | |
|
|
|
|
|
|
|
для: Trianon
(18.07.2007 в 21:08)
| | > 2. склонение в принципе можно реализовать через массив.
хм, через массив? а как это будет выглядеть?
спасибо за помощь | |
|
|
|
|
|
|
|
для: JIEXA
(18.07.2007 в 21:19)
| | А зачем вообще склонять? От 1 до 31 января, всегда будет как января, с остальными месяцами также. ) | |
|
|
|
|
|
|
|
для: sim5
(18.07.2007 в 21:30)
| | ммм, причем тут месяцы, сейчас речь тдет о 2-ом пункте, там надо часы и минуты сколнять | |
|
|
|
|
|
|
|
для: JIEXA
(18.07.2007 в 21:34)
| | Извиняюсь, ну тогда зависимость:
от 1 - час,
от 2 до 4 - часа
от 5 до 12 - часов... и т.д. | |
|
|
|
|
|
|
|
для: sim5
(18.07.2007 в 21:38)
| | А млин вы меня на мысль поттокнули... Точнее мне об этом наверное и хотел сказать Trianon.
Два массива:
первый: array("1", "2", "3", "4", "5", и т.д.
второй: array("1 час", "2 часа", "3 часа", "4 часа", "5 часов" и т.д.
и тоже самое с минутами... =)) | |
|
|
|
|
|
|
|
для: JIEXA
(18.07.2007 в 21:42)
| | Не знаю о чем хотел сказать Ttianon, но на худой конец можно и просто проверить числа часов, так как то что на один 1 и 21 это всегда "час", то что от 2 до 4 и от 22 до 24 всегда "часа", а остальное все "часов"... | |
|
|
|
|
|
|
|
для: JIEXA
(18.07.2007 в 21:19)
| |
<?
function term($v, $d, $term)
{
$v %= 100;
if($v >= 20) $v = $v%10;
return substr($term, $v*$d, $d);
}
$hterm = 'ов а а а овововововововововововововововов а а а ов';
$msterm = ' аыыы аыыы ';
$dt = time();
$tm = $dt - mktime(0, 0, 0, date('m', $dt), date('d', $dt), date('Y', $dt));
$ms = $tm % (60*60); $h = ($tm-$ms)/(60*60);
$s = $tm % 60; $m = ($ms-$s)/60;
echo "$h час".term($h,2,$hterm)
." $m минут".term($m,1,$msterm)
." $s секунд".term($s,1,$msterm)
." ";
'
|
| |
|
|
|
|
|
|
|
для: Trianon
(18.07.2007 в 21:58)
| | спасибо | |
|
|
|
|
|
|
|
для: Trianon
(18.07.2007 в 21:58)
| | не очень мне понянтно как устроено:
$hterm = 'ов а а а овововововововововововововововов а а а ов';
$msterm = ' аыыы аыыы ';
|
просто понадобилось сделать в виде "Осталось 5 часов 6 минут" а так как не понимаю как устроено, но получается сделать под себя :( | |
|
|
|
|
|
|
|
для: JIEXA
(21.07.2007 в 01:04)
| |
$message = "Осталось $h час".term($h,2,$hterm) ." $m минут".term($m,1,$msterm) ;
echo $message;
|
| |
|
|
|
|
|
|
|
для: JIEXA
(21.07.2007 в 01:04)
| | в этих двух строках перечислены окончания слова "часов" и слова "минут" мн.числа род.падежа. применительно к числительным от 0 до 20.
у слова "часов" двубуквенное окончание:
0 час ов
1 час
2 час а
3 час а
4 час а
5 час ов
и т.д.
у слова "минут" - однобуквенное окончание. По той же схеме.
0 минут
1 минут а
2 минут ы
3 минут ы
4 минут ы
5 минут
и т.д.
числительные от 20 до 29, от 30 до 39, ... от 90 до 99 обрабатываются также как и от 0 до 9 | |
|
|
|
|
|
|
|
для: Trianon
(21.07.2007 в 01:43)
| | большое спс | |
|
|
|