2010-02-09 4 views
6

Я работаю над приложением, в котором я сохраняю текущую дату в базе данных, но когда мое приложение работает на арабском языке, текущий формат даты изменяется на арабский. Я имею в виду, что формат даты должен быть таким, как это 09/02/2010, но цифры преобразуются в арабские цифры. Так как я могу преобразовать их обратно на английские цифры, даже если мое приложение работает на арабском языке?iphone sdk: как конвертировать арабский формат даты на английский?

ответ

11

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

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

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]; 

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

+0

Как изменить арабский локаль фиксированному для английского языка? –

+3

Посмотрите на NSFormatter setLocale - вы можете передать любой желаемый идентификатор языка. –

+0

Отличный ответ. Благодаря... – Biranchi

1

Попробуйте

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]; 
6

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

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]; 
0

Swift

dateFormatter.locale = NSLocale(localeIdentifier: "en_US") as Locale! 
dateFormatter.dateFormat = "dd/MM/yyyy" 
let resultsDate = dateFormatter.string(from: date) 
Смежные вопросы