конвертировать 00:02:47 в стандарт ISO_8601

Тема в разделе "Как сделать...", создана пользователем zagrenat, 10 ноя 2012.

  1. zagrenat

    zagrenat

    Регистр.:
    26 дек 2006
    Сообщения:
    244
    Симпатии:
    59
    Доброе, как конвертировать входной 1256(в секундах) в "P1Y2M10DT2H30M" ( стандарт en.wikipedia.org/wiki/ISO_8601)

    цифры условные в качестве примера приведены.
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    Интревал задан или нужно до текущего времени посчитать? Если втрое то для пхп версии >5.3 можно

    Код:
    $datetime1 = new DateTime( );
    $datetime2 = new DateTime('2009-10-13');
    $interval = $datetime1->diff($datetime2);
    echo $interval->format('P%yY%mM%dDT%hH%iM%sS');
    Хотя возможно есть вывод прям в этом формате
     
    zagrenat нравится это.
  3. zagrenat

    zagrenat

    Регистр.:
    26 дек 2006
    Сообщения:
    244
    Симпатии:
    59
    есть такая конструкция
    $nnm=date('H:i:s', trim(ltrim(strtotime("01.01.1970 00:00:00")+$val->duration)));
    и выводит как раз
    00:02:47

    а $val->duration вытаскивает просто секунды
    а мне под микроформаты заточить надо , и там
    <meta itemprop="duration" content="T1M33S" />
    пока что решения не нашел(

    только на перле есть
    phpkode.com/source/p/feng-office-your-world-wide-office/fengoffice/library/PEAR/SOAP/Type/duration.php
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    ну так сделай формат у даты соответствующий
    date('\Th\Hi\Ms\S',
    но если ноль в часах - критичен нужно делать либо проверку либо быстрокостыль $nnm= str_replace('T0H', 'T', $nnm);
     
    zagrenat нравится это.
  5. zagrenat

    zagrenat

    Регистр.:
    26 дек 2006
    Сообщения:
    244
    Симпатии:
    59
    во так получилось как надо)
    date('\TH\Hi\Ms\S',