Skip to content

Instantly share code, notes, and snippets.

@korun
Forked from codeincontext/gist:1285806
Last active August 29, 2015 14:05
Show Gist options
  • Save korun/187f26f045cee3cbe85c to your computer and use it in GitHub Desktop.
Save korun/187f26f045cee3cbe85c to your computer and use it in GitHub Desktop.

Revisions

  1. korun revised this gist Aug 29, 2014. 1 changed file with 12 additions and 10 deletions.
    22 changes: 12 additions & 10 deletions time_ago.js
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,6 @@
    // time in seconds
    // genitive - использовать ли родительный падеж (true / false)
    function timeAgo(time, genitive) {
    genitive = genitive || false;
    (function (){
    var units = [
    { name: "second", limit: 60, in_seconds: 1 },
    { name: "minute", limit: 3600, in_seconds: 60 },
    @@ -33,15 +32,18 @@ function timeAgo(time, genitive) {
    ends = ends[genitive ? 1 : 0];
    return ru_locale[name].name + ends;
    };
    window.timeAgo = function (time, genitive) {
    genitive = genitive || false;

    var diff = (new Date() - new Date(time * 1000)) / 1000;
    if (diff < 5) return "только что";
    var diff = (new Date() - new Date(time * 1000)) / 1000;
    if (diff < 5) return "только что";

    var i = 0, unit;
    while (unit = units[i++]) {
    if (diff < unit.limit || !unit.limit) {
    diff = Math.floor(diff / unit.in_seconds);
    return diff + " " + locale(unit.name, diff, genitive);
    var i = 0, unit;
    while (unit = units[i++]) {
    if (diff < unit.limit || !unit.limit) {
    diff = Math.floor(diff / unit.in_seconds);
    return diff + " " + locale(unit.name, diff, genitive);
    }
    }
    }
    }
    })();
  2. korun revised this gist Aug 29, 2014. No changes.
  3. korun revised this gist Aug 29, 2014. 1 changed file with 29 additions and 3 deletions.
    32 changes: 29 additions & 3 deletions time_ago.js
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,7 @@
    function timeAgo(time) {
    // time in seconds
    // genitive - использовать ли родительный падеж (true / false)
    function timeAgo(time, genitive) {
    genitive = genitive || false;
    var units = [
    { name: "second", limit: 60, in_seconds: 1 },
    { name: "minute", limit: 3600, in_seconds: 60 },
    @@ -8,14 +11,37 @@ function timeAgo(time) {
    { name: "month", limit: 31556926, in_seconds: 2629743 },
    { name: "year", limit: null, in_seconds: 31556926 }
    ];
    var ru_locale = {
    second: {name: 'секунд', one: ['а', 'у'], few: 'ы', many: ''},
    minute: {name: 'минут', one: ['а', 'у'], few: 'ы', many: ''},
    hour: {name: 'час', one: '', few: 'а', many: 'ов'},
    day: {name: '', one: 'день', few: 'дня', many: 'дней'},
    week: {name: 'недел', one: ['я', 'ю'], few: 'и', many: 'ь'},
    month: {name: 'месяц', one: '', few: 'а', many: 'ев'},
    year: {name: '', one: 'год', few: 'года', many: 'лет'}
    };
    var locale = function (name, number, genitive) {
    var e;
    if (number > 10 && number < 20)
    e = 'many';
    else {
    number = number % 10;
    e = number == 1 ? 'one' : (number < 5 && number > 1 ? 'few' : 'many');
    }
    var ends = ru_locale[name][e];
    if (typeof ends !== 'string')
    ends = ends[genitive ? 1 : 0];
    return ru_locale[name].name + ends;
    };

    var diff = (new Date() - new Date(time * 1000)) / 1000;
    if (diff < 5) return "now";
    if (diff < 5) return "только что";

    var i = 0, unit;
    while (unit = units[i++]) {
    if (diff < unit.limit || !unit.limit) {
    diff = Math.floor(diff / unit.in_seconds);
    return diff + " " + unit.name + (diff > 1 ? "s" : "");
    return diff + " " + locale(unit.name, diff, genitive);
    }
    }
    }
  4. korun revised this gist Aug 29, 2014. 1 changed file with 20 additions and 20 deletions.
    40 changes: 20 additions & 20 deletions time_ago.js
    Original file line number Diff line number Diff line change
    @@ -1,21 +1,21 @@
    function timeAgo(time){
    var units = [
    { name: "second", limit: 60, in_seconds: 1 },
    { name: "minute", limit: 3600, in_seconds: 60 },
    { name: "hour", limit: 86400, in_seconds: 3600 },
    { name: "day", limit: 604800, in_seconds: 86400 },
    { name: "week", limit: 2629743, in_seconds: 604800 },
    { name: "month", limit: 31556926, in_seconds: 2629743 },
    { name: "year", limit: null, in_seconds: 31556926 }
    ];
    var diff = (new Date() - new Date(time*1000)) / 1000;
    if (diff < 5) return "now";

    var i = 0;
    while (unit = units[i++]) {
    if (diff < unit.limit || !unit.limit){
    var diff = Math.floor(diff / unit.in_seconds);
    return diff + " " + unit.name + (diff>1 ? "s" : "");
    function timeAgo(time) {
    var units = [
    { name: "second", limit: 60, in_seconds: 1 },
    { name: "minute", limit: 3600, in_seconds: 60 },
    { name: "hour", limit: 86400, in_seconds: 3600 },
    { name: "day", limit: 604800, in_seconds: 86400 },
    { name: "week", limit: 2629743, in_seconds: 604800 },
    { name: "month", limit: 31556926, in_seconds: 2629743 },
    { name: "year", limit: null, in_seconds: 31556926 }
    ];
    var diff = (new Date() - new Date(time * 1000)) / 1000;
    if (diff < 5) return "now";

    var i = 0, unit;
    while (unit = units[i++]) {
    if (diff < unit.limit || !unit.limit) {
    diff = Math.floor(diff / unit.in_seconds);
    return diff + " " + unit.name + (diff > 1 ? "s" : "");
    }
    }
    };
    }
    }
  5. korun renamed this gist Aug 29, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  6. skattyadz created this gist Oct 13, 2011.
    21 changes: 21 additions & 0 deletions gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    function timeAgo(time){
    var units = [
    { name: "second", limit: 60, in_seconds: 1 },
    { name: "minute", limit: 3600, in_seconds: 60 },
    { name: "hour", limit: 86400, in_seconds: 3600 },
    { name: "day", limit: 604800, in_seconds: 86400 },
    { name: "week", limit: 2629743, in_seconds: 604800 },
    { name: "month", limit: 31556926, in_seconds: 2629743 },
    { name: "year", limit: null, in_seconds: 31556926 }
    ];
    var diff = (new Date() - new Date(time*1000)) / 1000;
    if (diff < 5) return "now";

    var i = 0;
    while (unit = units[i++]) {
    if (diff < unit.limit || !unit.limit){
    var diff = Math.floor(diff / unit.in_seconds);
    return diff + " " + unit.name + (diff>1 ? "s" : "");
    }
    };
    }