Используя NSDateFormatter на iPhone, защитите локаль, но потеряйте компоненты даты

Мне нравится этот подход. Он простой и не магический, поддерживает все повторяемые типы и не требует импорта.

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
12
задан John Ballinger 9 July 2009 в 02:58
поделиться

2 ответа

Вы можете попробовать что-нибудь вроде:

//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 ", на тот случай, если у вас появятся лишние пробелы или запятые.

11
ответ дан 2 December 2019 в 04:03
поделиться

Проблема с ответом выше заключается в том, что @ "y", и @ "y" оба зависят от локализации. Я просто поигрался с установкой формата даты и времени на моем компьютере на японский, корейский и ряд других форматов. Вы обнаружите, что иногда год представлен символом на местном языке, а иногда используется точка или другие возможности. Так что вам нужно будет найти и заменить все эти возможности, если вы надеетесь поддерживать правильную зависимость от локализации.

Существует метод класса + dateFormatFromTemplate: options: locale: , который может помочь, хотя он не принимает стиль даты или времени и поэтому не такой гибкий.

Я не уверен, что есть хорошее решение с дополнительными API от Apple. Но даже тогда неясно, есть ли у них собственные локализации, разделенные на компоненты. Без этого это практически невыполнимая задача.

10
ответ дан 2 December 2019 в 04:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: