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

Форум Регулярные Выражения

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

 

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

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

тема: развернуть дату
 
 автор: dirol   (09.12.2008 в 09:57)   письмо автору
 
 

помогите развернуть дату
у меня она 05-09-2008

а надо
2008-09-05

  Ответить  
 
 автор: Trianon   (09.12.2008 в 12:15)   письмо автору
 
   для: dirol   (09.12.2008 в 09:57)
 

explode, array_reverse, implode
Нет?

  Ответить  
 
 автор: xx77   (09.12.2008 в 20:07)   письмо автору
 
   для: dirol   (09.12.2008 в 09:57)
 

или так
<?
$d
='05-09-2008';
echo (
$x preg_replace('#^(\d+)-(\d+)-(\d+)$#''$3-$2-$1'$d)) . "\n";

######### или #########

$d unpack("A2d/x/A2m/x/A4y"$d);
// print_r($d);
echo $d['y'] .'-' $d['m'] .'-' $d['d'];
######### или .......................?>

  Ответить  
 
 автор: BinLaden   (09.12.2008 в 20:13)   письмо автору
 
   для: dirol   (09.12.2008 в 09:57)
 

<?php
sscanf('05-09-2008', '%d-%d-%d', $d, $m, $y);

echo $y, '-', $m, '-', $d;
?>

Нет, я выпендрицо решил.

  Ответить  
 
 автор: xx77   (09.12.2008 в 20:38)   письмо автору
 
   для: BinLaden   (09.12.2008 в 20:13)
 

как раз так-же хотел написать ;)
но что-то заинтересовало как-же unpack использовать,
и ещё есть какие-то функции для работой с датой, вспомню, напишу

// надо попробовать использовать зачёркнутый шрифт :)

  Ответить  
 
 автор: ddhvvn   (09.12.2008 в 20:42)   письмо автору
 
   для: xx77   (09.12.2008 в 20:38)
 

>и ещё есть какие-то функции для работой с датой, вспомню, напишу

date,time,mktime,strtotime

  Ответить  
 
 автор: AcidTrash   (09.12.2008 в 21:40)   письмо автору
 
   для: dirol   (09.12.2008 в 09:57)
 

Вообщем варианты такие, через РГ:
<?php
$d
='05-09-2008';
echo 
preg_replace('#^(\d{1,2})-(\d{1,2})-(\d{4})$#''$3-$2-$1'$d);
?>
Или:
<?php
$d
=explode("-",$d);
$d=array_reverse($d);
$d=implode("-",$d);
echo 
$d;
?>

  Ответить  
 
 автор: xx77   (10.12.2008 в 13:49)   письмо автору
 
   для: AcidTrash   (09.12.2008 в 21:40)
 

попробовал сравнить по скорости ,
как всегда не очень аккуратно :)
<?
list($m$time) = sscanf(microtime(), '%f %u');
$time += $m;

$date '01-02-2008';
$i=0;
$str '';

?><textarea><?

 
while(($i+=1)< 20000) {
    
/*    
    echo  $str = implode('', unpack('x6/A4a/X8/A4b/X6/A2c', $date));
# */
    /*
    echo $str = preg_replace('#^(\d+)-(\d+)-(\d+)#', '$3-$2-$1', $date);
# */
#    /*
    
echo $str implode('-'array_reverseexplode('-'$date)));
# */
    /*
    list($d, $m, $y) = sscanf($date, '%2c-%2c-%4c');
    echo $str = $y .'-' . $m .'-' . $d;
# */

 
}
?></textarea><?

list($m$tempt) = sscanf(microtime(), '%f %u');
printf ("%.7f\r\n\r\n", (($tempt += $m) - $time) );
?>

думаю конкретно с таким случаем быстрее что-то одно из двух
, со sscanf()
, или с array_reverse()

  Ответить  
 
 автор: AcidTrash   (10.12.2008 в 21:47)   письмо автору
 
   для: xx77   (10.12.2008 в 13:49)
 

Строковые функции работают быстрее и если есть возможность по задаче применить их, то желательно пользоваться ими.

P.S. А время выполнения РГ не пробовали? В данном случае загруженности нет.
И думаю время обработки, не превысится.

  Ответить  
 
 автор: Trianon   (10.12.2008 в 23:07)   письмо автору
 
   для: AcidTrash   (10.12.2008 в 21:47)
 

to xx77:

вообще-то есть еще
$date = substr($date, 6, 4).substr($date, 2, 4).substr($date, 0, 2);


А бенчмарки надо писать так, чтобы накладные расходы на цикл не влияли на результат.

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

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