如何将任何语言的日期转换为特定语言

时间:2014-05-15 13:41:15

标签: ios nsdateformatter nslocale

如何将任何语言的日期(阿拉伯语)转换为特定语言(英语)。

在将区域格式更改为阿拉伯语时,日期会发生变化。当我从某些控件(UIButtons或UILabels)中选择日期值以保存数据库时,它会选择阿拉伯语的日期并以相同的格式保存。在这里,我想将日期从阿拉伯语转换为英语,然后将其保存在数据库中。

我尝试了这个,但它的回归是

NSDate *currentDate = //My date coming like  “٢٠١٤-٠٥-١٥ ١٢:١٠:٢٣ ”
NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale: usLocale];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:s a"];
NSString *formattedDate = [formatter stringFromDate: currentDate];

有人可以帮助我吗?

4 个答案:

答案 0 :(得分:8)

我以这种方式解决了

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
    [dateFormatter setTimeZone:timeZone];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:s"];
    NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    [dateFormatter setLocale:usLocale];
    NSString *dateString = [dateFormatter stringFromDate:myDate];

答案 1 :(得分:4)

您不应以任何语言存储日期。您应该存储没有语言或区域设置或时区的NSDate,并根据需要显示它。如果您的数据库无法存储NSDate,您可以使用类方法dateWithTimeIntervalSince1970存储[myDate timeIntervalSince1970]并将其转换为NSDate:

答案 2 :(得分:0)

您应该使用UIDatePicker作为输入而不是UIButtons或UILabels。将timeIntervalSince1970保存到您的数据库中,以便可以用任何语言显示它。

NSDate *currentDate = //My date coming like  “٢٠١٤-٠٥-١٥ ١٢:١٠:٢٣ ”
NSTimeInterval timeToBeSavedInDatabase = [currentDate timeIntervalSince1970];
//in the future, you can show this date in any language
NSString *dateString = [formatter stringFromDate:[NSDate dateWithTimeIntervalSince1970]];

答案 3 :(得分:0)

您可以使用此选项来获取首选本地

的日期
 NSDate * dateNow = [NSDate new];

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

[dateFormat setLocale: usLocale];

[dateFormat setDateFormat:@"YYYY-MM-dd HH:mm:ss"];

NSString *   dateString = [dateFormat stringFromDate:dateNow];