Мне нравится этот подход. Он простой и не магический, поддерживает все повторяемые типы и не требует импорта.
def chunk_iter(iterable, chunk_size):
it = iter(iterable)
while True:
chunk = tuple(next(it) for _ in range(chunk_size))
if not chunk:
break
yield chunk
Вы можете попробовать что-нибудь вроде:
//create a date formatter with standard locale, then:
// have to set a date style before dateFormat will give you a string back
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
// read out the format string
NSString *format = [dateFormatter dateFormat];
format = [format stringByReplacingOccurrencesOfString:@"y" withString:@""];
[dateFormatter setDateFormat:format];
Что-то вроде взлома, но он должен работать.
Изменить: вы можете удалить вхождения строк @ "y, Сначала "
и @" y "
, на тот случай, если у вас появятся лишние пробелы или запятые.
Проблема с ответом выше заключается в том, что @ "y",
и @ "y"
оба зависят от локализации. Я просто поигрался с установкой формата даты и времени на моем компьютере на японский, корейский и ряд других форматов. Вы обнаружите, что иногда год представлен символом на местном языке, а иногда используется точка или другие возможности. Так что вам нужно будет найти и заменить все эти возможности, если вы надеетесь поддерживать правильную зависимость от локализации.
Существует метод класса + dateFormatFromTemplate: options: locale:
, который может помочь, хотя он не принимает стиль даты или времени и поэтому не такой гибкий.
Я не уверен, что есть хорошее решение с дополнительными API от Apple. Но даже тогда неясно, есть ли у них собственные локализации, разделенные на компоненты. Без этого это практически невыполнимая задача.