2010-02-09 14 views
6

Estoy trabajando en una aplicación en la que guardo la fecha actual en la base de datos, pero cuando mi aplicación se ejecuta en árabe el formato de fecha actual se cambia al árabe. Me refiero al formato de fecha como este 09/02/2010 pero los dígitos se convierten a dígitos árabes. Entonces, ¿cómo los convierto de nuevo en cifras en inglés, incluso si mi aplicación se ejecuta en árabe?iphone sdk: cómo convertir el formato de fecha árabe al inglés?

Respuesta

11

En general, es mejor mantener las fechas en un tipo agnóstico y solo formatearlas cuando se deben mostrar. Un formato común es almacenar la cantidad de segundos desde 1970 u otra fecha que elija.

E.g. el siguiente código mostrará la hora actual correctamente formateada para los usuarios locales.

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

Sin embargo, cuando tiene una fecha en un formato específico de la configuración regional, puede volver a utilizar la clase de formateador para convertirla. P.ej.

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

Para trabajar con cualquier tipo de datos específicos de la localidad (fechas, monedas, medidas), las clases de formateador son su amigo.

+0

¿Cómo puedo cambiar la configuración regional árabe en una configuración regional Inglés fijo? –

+3

Mire NSFormatter setLocale - puede pasar cualquier identificador de configuración regional que desee. –

+0

Gran respuesta. Gracias... – Biranchi

1

probar este

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

lo encontré aquí lo hice como esto

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) 
Cuestiones relacionadas