Преобразование метки времени unix в стиль twitter/facebook

Я пытаюсь преобразовать отметку времени unix для отображения, например, в facebook и twitter. Например, когда вы видите твиты или комментарии, размещенные в Twitter/Facebook, вы видите дату/время, отображаемые следующим образом:

«2 минуты назад» или «2 дня назад» или «2 недели назад»

Кто-нибудь знает какую-либо функцию, чтобы заставить ее работать так. Я предполагаю, что это будет заказной.

Любая помощь высоко ценится


person HomeBrew    schedule 13.07.2011    source источник
comment


Ответы (3)


Если вы используете php, вы можете попробовать следующую функцию, опубликованную Мэттом Джонсом.

http://www.mdj.us/web-development/php-programming/another-variation-on-the-time-ago-php-function-use-mysqls-datetime-field-type/

// DISPLAYS COMMENT POST TIME AS "1 year, 1 week ago" or "5 minutes, 7 seconds ago", etc...
function time_ago($date,$granularity=2) {
    $date = strtotime($date);
    $difference = time() - $date;
    $periods = array('decade' => 315360000,
        'year' => 31536000,
        'month' => 2628000,
        'week' => 604800, 
        'day' => 86400,
        'hour' => 3600,
        'minute' => 60,
        'second' => 1);

    foreach ($periods as $key => $value) {
        if ($difference >= $value) {
            $time = floor($difference/$value);
            $difference %= $value;
            $retval .= ($retval ? ' ' : '').$time.' ';
            $retval .= (($time > 1) ? $key.'s' : $key);
            $granularity--;
        }
        if ($granularity == '0') { break; }
    }
    return ' posted '.$retval.' ago';      
}
person calumbrodie    schedule 13.07.2011
comment
Это оно! Полностью то, что я хочу. - person Fatih Aytekin; 30.04.2016

Мне также нравится плагин jquery timeago, который автоматически обновляет все поля времени по установленному таймеру, поэтому он актуален. если пользователь остается на странице некоторое время. Вам нужно будет преобразовать время unix в формат ISO 8601 при рендеринге, но я считаю, что для этого есть функция php.

person bkaid    schedule 13.07.2011

Простой скрипт, который занимает время в секундах и отлично работает

function twitter_time($time) {
  $delta = time() - strtotime($time);
  if ($delta < 60) {
    return '30sec ago';
  } else if ($delta < 120) {
    return '1m ago';
  } else if ($delta < (60 * 60)) {
    return floor($delta / 60) . 'm ago';
  } else if ($delta < (120 * 60)) {
    return '1h ago';
  } else if ($delta < (24 * 60 * 60)) {
    return floor($delta / 3600) . 'h ago';
  } else if ($delta < (48 * 60 * 60)) {
    return '1d ago';
  } else if ($delta < (86400*7)) {
    return floor($delta / 86400) . 'd ago';
  } else if ($delta < (2*86400*7)) {
    return '1week ago';
  } else if ($delta < (2592000)) {
    return floor($delta / (86400*7)) . 'weeks ago';
  } else if ($delta < (2*2592000)) {
    return '1mon ago';
  } else if ($delta < (31104000)) {
    return floor($delta / 2592000) . 'mon ago';
  } else if ($delta < (2*31104000)) {
    return '1year ago';
  } else {
    return number_format(floor($delta / 31104000)) . 'years ago';
  } 
}
person zish    schedule 18.01.2018