2013-03-26 1 views
-3

Я пытаюсь получить NSDate в формате, который может быть принят веб-службами моего мобильного приложения. Приложение в настоящее время выводит в формате 2013-03-26 17:27:55 на устройствах поколения старшего поколения (iPhone 3GS, 4 и iOS Simulator), где 12-часовое время появляется в формате 5:27 PM в строке состояния. Это хорошо, и это тот формат, который мне нужен для сервера.Как заставить объект NSDate следовать определенному формату, когда 24-часовое время выключено, на основе NSLocale?

Проблема возникает при использовании новых устройств (включая iPhone 4S и iPhone 5), где 12-часовое время отображается в строке состояния 5:27 м. В строке состояния. На этих устройствах приложение выводит в формате 2013-03-26 05:27:55 PM. Вот краткое описание проблемы:

Web service accepts yyyy-mm-dd HH:MM:ss 
iPhone 4 and earlier yyyy-mm-dd HH:MM:ss (correct) 
iPhone 4s and later yyyy-mm-dd HH:MM:ss AM/PM (incorrect and rejected) 

Итак, как я могу получить выводимый дату на 4S и позже, чтобы быть в 24-часовом формате, когда 24-часовое время выключен в Пользователя Общие настройки?

EDIT:

Я использую следующий (NSDate *)getCurrentDate метод, чтобы попытаться изменить формат объекта NSDate.

NSDate *currentDateAndTime = [[NSDate alloc] init]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

NSLog(@"AM Symbol: %@", formatter.AMSymbol); 
NSLog(@"PM Symbol: %@", formatter.PMSymbol); 

NSString *dateString = [formatter stringFromDate:currentDateAndTime]; 
NSDate *date = [formatter dateFromString:dateString]; 

NSLog(@"currentDate: %@ currentDateString: %@", date, dateString); 

return [formatter dateFromString:[formatter stringFromDate:currentDateAndTime]]; 
+0

Как вы преобразовывая NSDate в NSString в вашем приложении в настоящее время? – Anupdas

+1

Вы пытались использовать NSDateFormatter? –

+0

Для конкретных форматов вам действительно нужно использовать NSDateFormatter с указанной строкой формата. Для потребления человеком это нахмурилось, предпочитая дефолты. Для машинного потребления это действительно необходимо. – gaige

ответ

1

Использование форматирования даты

- (NSString *)dateStringForWebService:(NSDate *)date 
{ 
    //If you call this often, you should cache the date formatter object 
    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init]; 
    [dateFormatter setDateFormat:@"MM/dd/yy HH:mm:ss"]; 
    NSString * formattedDate = [dateFormatter stringFromDate:date]; 
    return formattedDate; 
} 
+0

Эй, я уже пробовал это. Мой метод getCurrentDate заменяет мои вызовы на '[NSDate date]' в приложении. Независимо от того, что я делаю, я не могу избавиться от м. Или п.м. в объекте NSDate. Я отредактировал мой вопрос выше, чтобы включить метод getCurrentDate. –

+1

Ваш код возвращает объект NSDate - ** не объект NSString **. В объекте NSDate дата представляет число с плавающей запятой, которое представляет собой количество секунд с 1970 года. * В нем нет представления AM или PM. * Если вы хотите специально отформатированную строку на основе NSDate, вы должны использовать NSDateFormatter. –

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