Форматировать строку в обычное время, а не военное - PullRequest
0 голосов
/ 19 мая 2011

Я пытаюсь отформатировать строку в обычное, а не военное время.Как бы я это сделал.

if ([components hour] == 0 &&
        [components minute] == 0 &&
        [components second] == 0){

        result.detailTextLabel.text = 
        [NSString stringWithFormat:
         @"%02ld/%02ld/%02ld - %02ld/%02ld/%02ld All Day",
         (long)[components month],
         (long)[components day],
         (long)[components year],
         (long)[components1 month],
         (long)[components1 day],
         (long)[components1 year]];

    } else {
        result.detailTextLabel.text = 
        [NSString stringWithFormat:
         @"%02ld/%02ld/%02ld at %02ld:%02ld - %02ld:%02ld",

         (long)[components month],
         (long)[components day],
         (long)[components year],
         (long)[components hour],
         (long)[components minute],
         (long)[components1 hour],
         (long)[components1 minute]];

    }

Ответы [ 2 ]

4 голосов
/ 19 мая 2011

Это правильный способ сделать это. Он будет форматировать время в соответствии с языком и предпочтениями пользователя - поэтому в Германии или Франции он будет использовать 24-часовое время, а в США - AM / PM.

NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
[fmt setTimeStyle:NSDateFormatterMediumStyle]; // Full time with seconds, no TZ
[fmt setDateStyle:NSDateFormatterNoStyle]; // No date
NSDate *now = [NSDate dateWithTimeIntervalSinceNow:0];
NSLog(@"%@", [fmt stringFromDate:now]);

Если вы попытаетесь внедрить форматирование даты / времени самостоятельно, вы будете раздражать только тех пользователей, которые изменили свои системные настройки, и тех, кто живет в других странах. Делай правильно, используй библиотечную функцию.

2 голосов
/ 19 мая 2011
NSDateComponents *components = /* ... */;
NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar] autorelease];
NSDate *date = [calendar dateFromComponents: components];
NSString *string = [NSDateFormatter localizedStringFromDate: date dateStyle: NSDateFormatterNoStyle timeStyle: NSDateFormatterShortStyle];

Это намного проще и автоматически локализует строку результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...