iphone SDK: как конвертировать арабский формат даты на английский? - PullRequest
6 голосов
/ 09 февраля 2010

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

Ответы [ 4 ]

11 голосов
/ 09 февраля 2010

В общем случае лучше хранить даты в агностическом типе и форматировать их только тогда, когда они должны отображаться. Распространенным форматом является сохранение количества секунд с 1970 года или другой выбранной вами даты.

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

NSDate* now = [NSDate dateWithTimeIntervalSinceNow:0];
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
NSString* localDateString = [formatter stringFromDate];
[formatter release];

Однако, если у вас есть дата в формате, специфичном для локали, вы можете снова использовать класс форматера для ее преобразования. Э.Г.

NSString* localDate = @"09/02/2010";  // assume this is your string

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
NSDate* date = [formatter dateFromString: localDate];
[formatter release];

Для работы с любым типом данных, относящихся к локали (даты, валюта, измерения), классы форматирования - ваш друг.

6 голосов
/ 09 февраля 2010

я нашел это здесь, я сделал это так

NSDate *CurrentDate = [NSDate date];
NSDateFormatter *Formatter=[[NSDateFormatter alloc] init];
NSLocale *indianLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[Formatter setLocale:indianLocale];
[Formatter setDateFormat:@"dd/MM/yyyy"];
NSString *FormattedDate=[Formatter stringFromDate:CurrentDate];
[indianLocale release];
[Formatter release];
1 голос
/ 09 февраля 2010

Попробуйте это

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"EST"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSString *dateString = [dateFormatter stringFromDate:localDate];
0 голосов
/ 07 марта 2017

Swift

dateFormatter.locale = NSLocale(localeIdentifier: "en_US") as Locale!
dateFormatter.dateFormat = "dd/MM/yyyy"
let resultsDate = dateFormatter.string(from: date)
...