timeago.js: is a tiny(2kb) library used to format date with `*** time ago`. eg: '3 hours ago'. No dependency.
Description: timeago.js is a tiny(2kb) library used to format date with `*** time ago`. eg: '3 hours ago'. No dependence. and support automatically updating fuzzy timestamps.
Keywords: timeago, timeago.js, datetime,*** time ago, javascript timeago, react-timeago, jquery-timeago, timeago.org

# timeago.js

## a tiny / simple library

### What ?

timeago.js is a tiny(2kb) library used to format date with `*** time ago`. eg: '3 hours ago'. No dependency. and support automatically updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago"). Download, view the examples, and enjoy.

You opened this page when you opened the page. (This will update automatically. Wait for it.)

Hustcc was born Aug 01, 1989.

### Why ?

timeago.js was built to format date with `*** time ago` statement. You can test timeago.js here with the live demo.

- Avoid timestamps dated "1 minute ago" even though the page was opened 10 minutes ago; timeago refreshes automatically.
- You can take full advantage of page caching in your web applications, because the timestamps aren't calculated on the server.
- Very tiny(less than 2kb), and has no dependency, e.g. jQuery.

### How ?

First, load and install timeago.js library:

    npm install timeago.js

Load timeago.js library file with script tag:

    <script src="dist/timeago.js" type="text/javascript"></script>

Or you can use ES6 style:

    import * as timeago from 'timeago.js';

Now, let's attach it to your timestamps on DOM ready:

    timeago().render(document.querySelectorAll('.need_to_be_rendered'));

This will realtime render all `selected`(javascript DOM selector) elements with a class of `need_to_be_rendered`.

    <span class="need_to_be_rendered" datetime="2016-07-07T09:24:17Z">July 07, 2016</span>

You can also use it programmatically:

    timeago.format(new Date());             //=> ""
    timeago.format('2016-09-07', 'zh_CN')           //=> ""
    timeago.format(1473245023718);          //=> ""

### Locales register ?

Yes, timeago.js has locale/i18n/language support. Here are some configuration examples. Please submit a GitHub pull request for corrections or additional languages.

    var locale = function(number, index, totalSec) {
      // number: the time ago / time in number;
      // index: the index of array below;
      // totalSec: total seconds between date to be formatted and today's date;
      return [
        ['just now', 'right now'],
        ['%s seconds ago', 'in %s seconds'],
        ['1 minute ago', 'in 1 minute'],
        ['%s minutes ago', 'in %s minutes'],
        ['1 hour ago', 'in 1 hour'],
        ['%s hours ago', 'in %s hours'],
        ['1 day ago', 'in 1 day'],
        ['%s days ago', 'in %s days'],
        ['1 week ago', 'in 1 week'],
        ['%s weeks ago', 'in %s weeks'],
        ['1 month ago', 'in 1 month'],
        ['%s months ago', 'in %s months'],
        ['1 year ago', 'in 1 year'],
        ['%s years ago', 'in %s years']
      ][index];
    };
    timeago.register('pt_BR', locale);
    // then you can use it
    timeago.format(1473245023718, 'pt_BR');

### Where ?

Package is managed with npm. so npm install timeago.js will be the latest version.

The code is hosted on GitHub: http://github.com/hustcc/timeago.js. Go on, live on the edge.

### Who ?

timeago.js was built by Hustcc while standing on the shoulders of giants.

### What else ?

- timeago.js for react: timeago-react is here
- timeago for python: timeago is here

Other timeago, welcome to pull a request.

### Do you use timeago.js ?

Great! Please let me know, and can add into the README.