개발 중인 모듈에서 시간 표시를 SNS 자주 사용하는.. "몇일전,몇분전" 으로 표시하려고합니다.

 

라이믹스

{zdate($oDocument->get('regdate'), 'relative')}

1일전

 

XE

{getTimeGap($document->get('regdate'), "Y.m.d H:i")}

2018.03.07 12:01 

 

위와 같이 XE는 날짜 형식 그대로 출력을합니다.

제대로 표시하려면 어떻게 해야될까요?

  • ?
    
    public function time_elapsed($datetime, $full = FALSE)
    {
    $now = new DateTime;
    $ago = new DateTime($datetime);
    $diff = $now->diff($ago);
    $diff->w = floor($diff->d / 7);
    $diff->d -= $diff->w * 7;
    $string = array(
    'y'=>'Year',
    'm'=>'Month',
    'w'=>'Week',
    'd'=>'Day',
    'h'=>'Hour',
    'i'=>'Minute',
    's'=>'Second'
    );
    foreach($string as $k => &$v)
    {
    if($diff->$k)
    {
    $v = $diff->$k.' '.$v.($diff->$k > 1 ?'s':'');
    }
    else
    {
    unset($string[$k]);
    }
    }
    if(!$full) $string = array_slice($string,0,1);
    return $string ? implode(', ',$string).' ago':'just now';
    }

     

    XE는 함수를 따로 등록해서 사용하셔야 합니다.

  • profile

    저희가 스케치북 스킨에 댓글 등록시간을 출력해 주려고 사용한 코드 입니다.
    {getTimeGap($comment->get('regdate'), "Y.m.d H:i")}
    따로 무엇을 해주진 않았던 것으로 기억합니다. 저랑 같은 코드 인것 같은데요...

     

    제 기억으로는 24시간 까지만 몇분전,몇시간전 으로 나오다가 24시간 경과하면 날짜로 나오는 것으로 알고 있습니다.

  • profile ?
    @_@ 알림센터는 별도로 구현했던데 XE내부에는 존재하지 않는게 아닐까 했는데 찾아봐야겠네요
  • ? profile
    저희는 왜 될까요 ㅋ 알림센터때문에 되는거... 설마.......
  • profile ?
    아뇨 이름이 달라요 NCenterLite는 getAgo로 ~일전 ~달전까지 보여주려고 따로 구현한것 같아요.
  • profile profile

    확인해 보니 func.inc.php 에 function getTimeGap이 있습니다.
    XE는 따로 함수를 등록할 필요는 없을거라 생각됩니다.
    웹지기님이 말씀하신것 처럼 xe의 getTimeGap은 일정 시간이 지나면 일반 시간으로 표시가 되는군요.

    라이믹스에서는 zdate($oDocument->get('regdate'), 'relative') 좀 더 지난 시간들도 SNS 날짜 형식처럼 잘 표시됩니다.

     

    그래서 제가 착각했습니다.

  • profile ?
    그러네요 672번줄부터가 getTimeGap이군요 =_= 엄한데서 찾고있었네요
  • profile profile
    근데 하루 넘은 것도 1일전,2일전 보다는 저는 지금 XE 방식이 더 맘에 들어요.