Преобразуване на unix time stamp в twitter/facebook стил

Опитвам се да конвертирам времеви печат на unix, за да се показва като facebook и twitter. Например, когато видите туитове или коментари, поставени в twitter/facebook, виждате датата/часа, показани така:

„Преди 2 минути“ или „Преди 2 дни“ или „Преди 2 седмици“

Някой знае ли за някаква функция, за да работи по този начин. Предполагам, че ще е по поръчка.

Всяка помощ е много ценена


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


Отговори (3)


Ако използвате php, може да искате да опитате следната функция, която беше публикувана от Matt Jones

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