2010-02-09 174 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

如何改变阿拉伯区域设置一个固定的英语语言环境? – 2010-02-09 09:45:04

+3

看看NSFormatter setLocale - 你可以传入你想要的任何区域标识符。 – 2010-02-10 05:01:55

+0

好答案。谢谢... – Biranchi 2010-07-07 08:20:31

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

斯威夫特

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