Moment: <moment minutes="" ago="">.from(рдкрд▓ ()) // рд░рд┐рдЯрд░реНрди 'рдПрдХ рдШрдВрдЯрд╛ рдкрд╣рд▓реЗ'</moment>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЕрдХреНрддреВре░ 2014  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: moment/moment

рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдПрдХ рдореБрджреНрджрд╛ рдЬреЛ рдореИрдВрдиреЗ рдЪрд▓рд╛рдпрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╕реЗ() рдЕрд╡рдзрд┐рдпреЛрдВ рдХреЛ рдЧреЛрд▓ рдХрд░реЗрдЧрд╛> = 45 рдорд┐рдирдЯ рд╕реЗ рдПрдХ рдШрдВрдЯреЗ рддрдХред рдЕрдиреНрдп рдЗрдХрд╛рдЗрдпрд╛рдБ (рд╕реЗрдХрдВрдб, рджрд┐рди рдЖрджрд┐) рднреА рдЧреЛрд▓ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╣рдо рдЗрд╕рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд╛рд░реНрдп рдЧреЛрд▓рд╛рдИ рдХрд░рддрд╛ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЧреЛрд▓рд╛рдИ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдзрдиреНрдпрд╡рд╛рдж!

    function relativeTime(milliseconds, withoutSuffix, lang) {
        var seconds = round(Math.abs(milliseconds) / 1000),
            minutes = round(seconds / 60),
            hours = round(minutes / 60),
            days = round(hours / 24),
            years = round(days / 365),
            args = seconds < 45 && ['s', seconds] ||
                minutes === 1 && ['m'] ||
                minutes < 45 && ['mm', minutes] ||
                hours === 1 && ['h'] ||
                hours < 22 && ['hh', hours] ||
                days === 1 && ['d'] ||
                days <= 25 && ['dd', days] ||
                days <= 45 && ['M'] ||
                days < 345 && ['MM', round(days / 30)] ||
                years === 1 && ['y'] || ['yy', years];
        args[2] = withoutSuffix;
        args[3] = milliseconds > 0;
        args[4] = lang;
        return substituteTimeAgo.apply({}, args);
    }

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╕рдордп рд╕реАрдорд╛ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рджреЗрдЦрд╛ рдЧрдпрд╛

рдпрджрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдкреВрд░реНрдг рд╕рдордп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреА рд╕реАрдорд╛ рдХреЛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

// Set thresholds to be at their "max" value
moment.relativeTimeThreshold('s', 59);
moment.relativeTimeThreshold('m', 59);
moment.relativeTimeThreshold('h', 23);
moment.relativeTimeThreshold('d', 28);
moment.relativeTimeThreshold('M', 12);

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

moment().subtract(45, 'minutes').from(moment())

рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╕рдордп рд╕реАрдорд╛ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рджреЗрдЦрд╛ рдЧрдпрд╛

рдпрджрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдкреВрд░реНрдг рд╕рдордп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреА рд╕реАрдорд╛ рдХреЛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

// Set thresholds to be at their "max" value
moment.relativeTimeThreshold('s', 59);
moment.relativeTimeThreshold('m', 59);
moment.relativeTimeThreshold('h', 23);
moment.relativeTimeThreshold('d', 28);
moment.relativeTimeThreshold('M', 12);

рдмрд╣реБрдд рдмрд╣реБрдд рд╢реБрдХреНрд░рд┐рдпрд╛ред рдХреНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП 75 рдорд┐рдирдЯ рдХреА рдЕрд╡рдзрд┐ рдХреЛ 'рдПрдХ рдШрдВрдЯреЗ' рдХреЗ рдмрдЬрд╛рдп 'рдПрдХ рдШрдВрдЯреЗ рдФрд░ 15 рдорд┐рдирдЯ' рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? 90 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╡рд╣реА рдкреНрд░рд╢реНрди -> '2 рдШрдВрдЯреЗ'ред

рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдореИрдВ рджреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдиреНрдирд┐рд╣рд┐рдд рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:

  • 1 рдШрдВрдЯрд╛, 56 рдорд┐рдирдЯ, 7 рд╕реЗрдХрдВрдб -> 'рдПрдХ рдШрдВрдЯрд╛ 56 рдорд┐рдирдЯ'
  • 4 рдШрдВрдЯреЗ, 56 рд╕реЗрдХрдВрдб -> 'рдЪрд╛рд░ рдШрдВрдЯреЗ'
  • 2 рджрд┐рди, 56 рдорд┐рдирдЯ -> 'рджреЛ рджрд┐рди'
  • 2 рджрд┐рди, 1 рдШрдВрдЯрд╛, 1 рдорд┐рдирдЯ -> 'рджреЛ рджрд┐рди рдФрд░ рдПрдХ рдШрдВрдЯрд╛'

рдХреНрдпрд╛ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд▓ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдЧрд╛ред рдЬреЗрдПрд╕, рдпрд╛ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рдХреНрд╖реНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рдЪрд▓рди рдХрд░рддрд╛ рд╣реИ?

рдпрд╣ рддрдерд╛рдХрдерд┐рдд "рдЕрд╡рдзрд┐ рдкреНрд░рд╛рд░реВрдк" рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдп рд╣реИред tl; dr рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдХреЛрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдпрд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВред рдЖрдк рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/moment/moment/issues/1048 рдпрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: https://github.com/jsmreese/moment-duration-formatред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tanepiper picture tanepiper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dbshwang picture dbshwang  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nikocraft picture nikocraft  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ninigix picture ninigix  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

danieljsinclair picture danieljsinclair  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ