2015-03-17 3 views
0

У меня есть приложение, которое показывает определенные состояния оборудования. Я знаю время, когда аппаратное обеспечение ввело указанное состояние (неудачно, активно, бездействует, не подключено и т. Д.). Я экспериментировал с показом состояния со «предыдущим» временем. Но я боролся с тем, как настроить разрешение.Какое разрешение использовать с метками «время назад»

Подчас легко, просто покажите «минуты назад». По мере того, как вы переходите на несколько часов назад, минуты становятся все менее важными. Я не уверен, что внезапно прыжок на «1 час назад» на 61 минуте - это правильный путь. И когда переключиться на «2 часа назад». Вы обходите или усекаете это вычисление. Та же самая дилемма существует в 24-часовой момент. Вы показываете 25 часов назад или просто говорите 1 день назад. Или должен быть период, когда я показываю «1 час и 13 минут назад», а затем в какой-то момент сбрасываю минутку.

Я знаю, что эти ярлыки «назад» не являются оригинальными. Мне любопытно, как это реализовано другими.

ответ

1

Moment.js - очень популярная библиотека, используемая в веб-разработке, которая может выводить time from now так же, как вы просите. Ниже приведен список того, как они разбивают свои интервалы на более удобоваримый формат.

Из их документации:

  • 0 до 45 секунд seconds ago
  • 45 до 90 секунд a minute ago
  • 90 секунд до 45 минут 2 minutes ago ... 45 minutes ago
  • 45 до 90 минут an hour ago
  • 90 минут 22 часа 2 hours ago ... 22 hours ago
  • 22 до 36 часов a day ago
  • 36 часов до 25 дней 2 days ago ... 25 days ago
  • от 25 до 45 дней a month ago
  • 45 до 345 дней 2 months ago ... 11 months ago
  • 345 до 547 дней (1,5 года) a year ago
  • 548 дней + 2 years ago ... 20 years ago
+0

Извините за запоздалый принять. Думал, что у меня было некоторое время назад. –

0

В качестве дополнения к ответу @JimmyBoh я думал, что добавлю код ObjectiveC, который я использовал:

#import "NSDate+AgoPrint.h" 

#define SECONDS(s) (s) 
#define MINUTES(m) ((m) * 60) 
#define HOURS(h) ((h) * 3600) 
#define DAYS(d) ((d) * 3600 * 24) 
#define YEARS(y) ((y) * 3600 * 24 * 365) 

@implementation NSDate (AgoPrint) 

- (NSString*) simpleAgoString { 
    NSTimeInterval ago = -self.timeIntervalSinceNow; 
    if (ago <= SECONDS(45)) { // 0 to 45 seconds seconds ago 
     return [NSString stringWithFormat: @"%u seconds ago", (unsigned int)round(ago)]; 
    } 
    else if (ago <= SECONDS(90)) { //45 to 90 seconds a minute ago 
     return @"a minute ago"; 
    } 
    else if (ago <= MINUTES(45)) { //90 seconds to 45 minutes 2 minutes ago ... 45 minutes ago 
     return [NSString stringWithFormat: @"%u minutes ago", (unsigned int)round(ago/MINUTES(1))]; 
    } 
    else if (ago <= MINUTES(90)) { // 45 to 90 minutes an hour ago 
     return @"an hour ago"; 
    } 
    else if (ago <= HOURS(22)) { // 90 minutes to 22 hours 2 hours ago ... 22 hours ago 
     return [NSString stringWithFormat: @"%u hours ago", (unsigned int)round(ago/HOURS(1))]; 
    } 
    else if (ago <= HOURS(36)) { // 22 to 36 hours a day ago 
     return @"a day ago"; 
    } 
    else if (ago <= DAYS(25)) { // 36 hours to 25 days 2 days ago ... 25 days ago 
     return [NSString stringWithFormat: @"%u days ago", (unsigned int)round(ago/DAYS(1))]; 
    } 
    else if (ago <= DAYS(45)) { // 25 to 45 days a month ago 
     return @"a month ago"; 
    } 
    else if (ago <= DAYS(345)) { // 45 to 345 days 2 months ago ... 11 months ago 
     return [NSString stringWithFormat: @"%u months ago", (unsigned int)round(ago/DAYS(30))]; 
    } 
    else if (ago < DAYS(547)) { // 345 to 547 days (1.5 years) a year ago 
     return @"a year ago"; 
    } 
    else { // 548 days+ 2 years ago ... 20 years ago 
     return [NSString stringWithFormat: @"%u years ago", (unsigned int)round(ago/YEARS(1))]; 
    } 
} 
@end 

Я может в конечном итоге добавив несколько недель или месяцев замены или недель, но общий подход кажется довольно ясно, как я бы прорезать, что в.

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

  • Нет связанных вопросов^_^