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

Форум PHP

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

 

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

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

тема: Форматирование даты
 
 автор: JIEXA   (18.07.2007 в 20:40)   письмо автору
 
 

У меня два глубеньких вопроса:
1. Как вывести дату в виде "18 июля 2007 года". Наверное, что-то типа date("d F Y", time()); только так месяц пишется по англ. языке, а мне на на русском.
2. Представим, что переменная $tstamp хранит дату в формате UNIX. И мне надо вывести её в виде:
4 часа 23 минуты
8 часов 1 минута
и т.д.

Дни, месяца, года в расчет брать не надо, так как всё будет в пределе 24 часов.

Будет отлично если есть у кого-то готовые решения, но идеи как можно реализовать, тоже не помешают.

Спасибо

   
 
 автор: Trianon   (18.07.2007 в 21:08)   письмо автору
 
   для: 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.

   
 
 автор: JIEXA   (18.07.2007 в 21:19)   письмо автору
 
   для: Trianon   (18.07.2007 в 21:08)
 

> 2. склонение в принципе можно реализовать через массив.

хм, через массив? а как это будет выглядеть?

спасибо за помощь

   
 
 автор: sim5   (18.07.2007 в 21:30)   письмо автору
 
   для: JIEXA   (18.07.2007 в 21:19)
 

А зачем вообще склонять? От 1 до 31 января, всегда будет как января, с остальными месяцами также. )

   
 
 автор: JIEXA   (18.07.2007 в 21:34)   письмо автору
 
   для: sim5   (18.07.2007 в 21:30)
 

ммм, причем тут месяцы, сейчас речь тдет о 2-ом пункте, там надо часы и минуты сколнять

   
 
 автор: sim5   (18.07.2007 в 21:38)   письмо автору
 
   для: JIEXA   (18.07.2007 в 21:34)
 

Извиняюсь, ну тогда зависимость:
от 1 - час,
от 2 до 4 - часа
от 5 до 12 - часов... и т.д.

   
 
 автор: JIEXA   (18.07.2007 в 21:42)   письмо автору
 
   для: sim5   (18.07.2007 в 21:38)
 

А млин вы меня на мысль поттокнули... Точнее мне об этом наверное и хотел сказать Trianon.
Два массива:
первый: array("1", "2", "3", "4", "5", и т.д.
второй: array("1 час", "2 часа", "3 часа", "4 часа", "5 часов" и т.д.

и тоже самое с минутами... =))

   
 
 автор: sim5   (18.07.2007 в 21:51)   письмо автору
 
   для: JIEXA   (18.07.2007 в 21:42)
 

Не знаю о чем хотел сказать Ttianon, но на худой конец можно и просто проверить числа часов, так как то что на один 1 и 21 это всегда "час", то что от 2 до 4 и от 22 до 24 всегда "часа", а остальное все "часов"...

   
 
 автор: Trianon   (18.07.2007 в 21:58)   письмо автору
 
   для: 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(000date('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)
    .
" ";
'

   
 
 автор: JIEXA   (19.07.2007 в 00:45)   письмо автору
 
   для: Trianon   (18.07.2007 в 21:58)
 

спасибо

   
 
 автор: JIEXA   (21.07.2007 в 01:04)   письмо автору
 
   для: Trianon   (18.07.2007 в 21:58)
 

не очень мне понянтно как устроено:

$hterm =  'ов  а а а овововововововововововововововов  а а а ов'; 
$msterm = ' аыыы                аыыы     ';

просто понадобилось сделать в виде "Осталось 5 часов 6 минут" а так как не понимаю как устроено, но получается сделать под себя :(

   
 
 автор: Trianon   (21.07.2007 в 01:38)   письмо автору
 
   для: JIEXA   (21.07.2007 в 01:04)
 


$message =  "Осталось $h час".term($h,2,$hterm) ." $m минут".term($m,1,$msterm) ;
echo     $message;

   
 
 автор: Trianon   (21.07.2007 в 01:43)   письмо автору
 
   для: 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

   
 
 автор: JIEXA   (21.07.2007 в 15:02)   письмо автору
 
   для: Trianon   (21.07.2007 в 01:43)
 

большое спс

   
Rambler's Top100
вверх

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