В руководстве по шаблонам формата даты Unicode ( здесь ) указано, что добавление 'a' к формат получит период (например, AM или PM), например,
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss a"];
Однако я хочу убедиться, что информация о периоде не отображается, но я не могу найти строку формата для этого. Используемая строка формата выглядит следующим образом:
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
к сожалению, когда я использую stringFromDate, я получаю следующее:
2013-01-09T11: 11: 00 AM
Я не хочу просто удалять AM или PM из результирующей строки, потому что синтаксис периода может отличаться в разных календарях и т. Д., Я просто хочу остановить появление информации о периоде.
----8<------
Рассмотрим следующий код
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSString *stringDate = [formatter stringFromDate:[NSDate date]];
self.labelOutput.text = stringDate;
[formatter release];
Этот код создаст строку в формате, который я хочу, но я не могу использовать его для управления памятью. Приложение, над которым я работаю, страдает от утечек памяти NSDateFormatter. Поэтому мы используем класс singleton для предоставления установленного номера NSDateFormatters для приложения, которое никогда не выпускается, и поэтому мы минимизируем количество утечек памяти. К сожалению, эти статические NSDateFormatters добавляют AM/PM, даже когда я применяю строку формата даты, таким образом:
NSDateFormatter *formatter = [MyDateFormatter dateFormat:kFormatDateMediumStyleTimeShortStyle];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];