2014-08-06 6 views
0

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

Например, в США следующий код возвращает «09/06/2014», но в Великобритании это будет «06/09/2014», и я хочу сохранить этот заказ, но вместо этого заменить черту тире или пространства. Однако я не верю, что могу просто проанализировать возвращенную строку и заменить экземпляры «/» на другие символы, потому что в некоторых локалях они, вероятно, не используют «/» (я не уверен, но это кажется очень вероятным).

NSDateFormatter.dateFormatFromTemplate("MMddyyyy", options: 0, locale: NSLocale.currentLocale()) 

Можно ли изменить разделитель даты компонента, когда в то же самое время, получая наиболее подходящий формат для данной местности?

+0

Возможно, вы захотите посмотреть [этот вопрос] (http://stackoverflow.com/questions/4109587/how-to-localize-a-timer-on-iphone), хотя ни один из ответов не кажется особенно убедительным. – jtbandes

+0

@jtbandes В этом вопросе они хотели отобразить соответствующий разделитель на основе языка. В моем случае я хочу заменить символ разделителя на другой символ, сохраняя все остальное. – Joey

+0

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

ответ

0

Я прошел через все языки на своем iPad и проверил формат коротких дат. Я узнал, что на всех языках используется один из этих трех разделителей: /. -

Так что, чтобы разрешать пользовательские разделители при сохранении формата, я просто заменяю эти символы специальным символом. Например:

dateFormatter.dateFormat = NSDateFormatter.dateFormatFromTemplate("MMddyyyy", options: 0, locale: NSLocale.currentLocale()) 
cell.dateLabel.text = dateFormatter.stringFromDate(NSDate()) 
cell.dateLabel.text = cell.dateLabel.text.stringByReplacingOccurrencesOfString("/", withString: " ", options: nil, range: nil) 
cell.dateLabel.text = cell.dateLabel.text.stringByReplacingOccurrencesOfString(".", withString: " ", options: nil, range: nil) 
cell.dateLabel.text = cell.dateLabel.text.stringByReplacingOccurrencesOfString("-", withString: " ", options: nil, range: nil) 

Было бы неплохо найти лучшее решение.