За последние 24 часа нас посетили 119933 программиста и 2992 робота. Сейчас ищут 1335 программистов ...

Подскажите как преобразовать цифры

Тема в разделе "PHP для новичков", создана пользователем marsik, 20 июл 2010.

  1. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    var_dump($key);
    string(8) "20100719" string(8) "20100718" string(8) "20100717" string(8) "20100716" string(8) "20100715" string(8) "20100714"

    нужно что бы было типа:
    string(8) "19.07.2010" string(8) "18.07.2010" string(8) "17.07.2010" string(8) "16.07.2010" string(8) "15.07.2010" string(8) "14.07.2010"

    есть советы?
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    marsik
    1. развернуть строку
    2. разбить на три части через точку
    3. склепать обратно в одну.
     
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    вспомнилось тут...
    Как засунуть слона в холодильник?
    1.Открыть дверцу холодильника.
    2.Положить в холодильник слона
    3.Закрыть дверцу холодильника.

    Как засунуть в холодильник жирафа?
    1.Открыть дверцу холодильника.
    2.Вытащить слона.
    3.Засунуть жирафа.
    4.Закрыть дверцу холодильника.

    советую купить холодильник со слоном =)
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    хотя тут разворачивать не нужно. просто разбить и переставить

    PHP:
    1. <?php
    2. $m = '20100719';
    3.  
    4. $year = substr($m, 0, 4);
    5. $month = substr($m, 4, 2);
    6. $day = substr($m, 6, 2);
    7.  
    8. $date = $day.'.'.$month.'.'.$year;
    а там уже сам переставляй местами. мож в одну строчку даж записать.
     
  5. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    Спасибо, помогло.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    marsik
    А не проще поменять код, который генерирует такие даты?
     
  7. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    igordata
    а я и говорю, что надо покупать холодильник со слоном внутри :D
     
  8. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Щас еще меня виноватым сделают :)))
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    мой способ хуже: он неудобнее и медленнее! =)

    PHP:
    1. <?php
    2.  
    3. $date_from = 'ggggmmdd';
    4. $date_to = 'gggg.mm.dd';
    5.  
    6. $t = microtime(true);
    7. for ($i = 0; $i < 1000000; $i++) {
    8.   $a = str_split($date_from, 2);
    9.   $date_to = $a[0].$a[1].'.'.$a[2].'.'.$a[3];
    10. }
    11. echo '1 : '.(microtime(true) - $t).'<br>';
    12.  
    13. $t = microtime(true);
    14. for ($i = 0; $i < 1000000; $i++) {
    15.   $year = substr($date_from, 0, 4);
    16.   $month = substr($date_from, 4, 2);
    17.   $day = substr($date_from, 6, 2);
    18.   $date_to = $year.'.'.$month.'.'.$day;
    19. }
    20. echo '2 : '.(microtime(true) - $t).'<br>';
    21. ?>
    1 : 2.0908999443054
    2 : 1.976224899292
     
  10. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    мой способ круче всех, он состоит в том чтобы формировать правильную дату сразу :D
     
  11. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    [​IMG]
    меряйтесь на здоровье)

    хотя тут надо шкалу на больше цифр подыскать))
     
  12. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    не, мне такая линейка не подходит, рулетка нужна... :DDD
     
  13. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Padaboo
    Рулетку забрал с собой один из наших многоуважаемых форумчан))) И вот гдето пропал)) меряет видать :)
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    большая рулетка видимо у него. в кругосветку подался, не иначе.
     
  15. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    угу, пугает анаконд в амазонке :D
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вобще конечно круто, что substr так хорошо работает. я еще с этим сталкивался на генераторе случайных id. Но позабыл =)
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    *пишет световым мечом*
    PHP:
    1. echo date('d.m.Y', strtotime('20100719'));
     
  18. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    [vs]
    сейчас как выяснится только, что твой метод медленнее работает :D
     
  19. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Padaboo
    Да, ты прав, примерно в 300 раз медленнее o_0
    зато кратко)
     
  20. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    [vs]
    :D
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Padaboo
    на 10000 итераций у меня выполняется за 5 секунд ))
     
  22. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    [vs]
    на сервере вот так:
     
  23. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    $key = "2010.07.20";
    $key = date('d.m.Y', strtotime($key));
    везде 01.01.1970, через explode, корректно но 2 строчки выходит, есть еще варианты?
     
  24. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    marsik
    так вы же написали в начале что ваш $key без точек.... и вообще массив
     
  25. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    это уже другой с точками.

    var_dump($key);
    string(10) "2010.07.19" string(10) "2010.07.18"

    $key = explode(".", $key);
    $key = $key[2].'.'.$key[1].'.'.$key[0];
    работает, есть проще варианты?