2015-08-25 4 views
0

У меня возникли трудности с форматированием времени с использованием moment.js. Я решил опробовать angular-moment и столкнулся с некоторыми ограничениями, и, посмотрев документацию для moment.js, кажется, что было бы намного лучше создать настраиваемую директиву, которая использует moment. Здесь лежит моя проблема, у меня есть некоторый опыт и знания основных директив, но я не уверен, как двигаться вперед с созданием директивы, которая использует moment для форматирования даты/времени. Итак, вот правила, которые я хочу придерживаться:Пользовательское форматирование на какое-то время с использованием Moment.js

Менее 1 минуты назад: печать, как a few seconds ago Более 1 минуты назад & & менее чем 1 часов назад: печать, как X minutes ago Более 1 часов назад: печать а h:mm a вчера (Это следует сравнить эти два дня, чтобы увидеть, если он сегодня или вчера): печать, как Yesterday Больше, чем вчера: печать, как MMM DD

так что я не уверен, где начать действительно, и любая помощь добро пожаловать!

+0

ли вы попробовать, timefrom? http://momentjs.com/docs/#/displaying/from/ –

+0

@SwarajGiri Я посмотрю, моя самая большая проблема связана с переносом этого в рабочую директиву – germainelol

+0

@SwarajGiri Очень неэффективный способ обработки 'from' can можно сказать, если 'a.from (b) === 'день назад' ', то' return' Yesterday'', но это кажется глупым способом сделать это. – germainelol

ответ

0

Moment.js - это путь! Я рекомендую использовать вместо 0 директивы директиву angular filter.

Вот как вы могли бы реализовать один с moment.js fromNow function:

var fromNow = function() { 
     return function (value, format) { 
      return moment(value).fromNow(); 
     }; 
    }; 

    angular.module('myApp').filter('fromNow', fromNow); 

И вы просто вызываете его из HTML:

<span>{{player.activeSince | fromNow}}</span> 
+0

Во-первых, спасибо за предложение использовать фильтр с fromNow, поскольку это сократило мой код, поскольку я пытался использовать директиву, перед которой кажется ненужным, когда вы можете добиться этого с помощью этого. Как бы вы отредактировали эту функцию 'fromNow', чтобы добавить в некоторые условия, как я уже упоминал выше? Используя это прямо сейчас, используйте настройки Moment 'defaultRelativeTime', такие как« месяц назад »и т. Д. Я хотел бы иметь некоторые особые случаи, как указано выше, где в некоторых случаях мне нужно будет принимать час или минуту с момента. Спасибо за помощь до сих пор! – germainelol

+0

Вы пытались настроить relativeTime? http://momentjs.com/docs/#/customization/relative-time/, если у вас есть бизнес-логика, которая добавляет или сокращает время, это должно быть сделано в контроллере. – Terafor

+0

Я попытался отредактировать настройки relativeTime, и я понимаю, как это сделать, чтобы изменить его из одной строки в другую, но я не понимаю, как бы добавить логику бизнеса к настройкам 'relativeTime' в соответствии с моим оригиналом после. – germainelol

Смежные вопросы