动态日期格式取决于语言和区域设置

时间:2013-08-27 12:25:00

标签: ios localization nsdateformatter

Plz帮我处理日期格式化程序:我需要根据选择的语言更改日期格式并选择24小时/ 12小时的格式化时间,因此动态更新它是一个主要的麻烦。现在我就像是

        [form setDateFormat:[NSString stringWithFormat:@"yyyy-MM-dd HH:mm"]];
        NSDate *normalDate = [form dateFromString:time];

        if (normalDate == nil) {
            [form setDateFormat:[NSString stringWithFormat:@"yyyy-MM-dd h:mm a"]];
            normalDate = [form dateFromString:time];
        }

        [form setDateFormat:[NSString stringWithFormat:@"MMMM dd, yyyy %@",timeF]];
        normalStr = [form stringFromDate:normalDate];

但我认为这是非常糟糕的方法,请帮助我制作更好的系统,这也会有效)

3 个答案:

答案 0 :(得分:0)

我从未尝试过,但您可以尝试使用Localizable.strings文件。 因此,当您本地化您的应用时,可以使用Localizable.strings(英语)

"date_format" = "yyyy-MM-dd HH:mm";

虽然可能在Localizable.strings(OtherLanguage)中放了

"date_format" = "yyyy-MM-dd h:mm a";

并在你的DateFormatter中执行

[form setDateFormat:NSLocalizedString(@"date_format", nil)]

答案 1 :(得分:0)

不确定你真正想做什么)

考虑使用NSDateFormatter dateFormatFromTemplate:options:locale:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html#//apple_ref/occ/clm/NSDateFormatter/dateFormatFromTemplate:options:locale: 例如具有当前区域设置值([NSLocale curentLocale]) 或使用[dateFormatter setLocale:...],指定所选语言

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

和[dateFormatter setTimeStyle:...]将其设置为NSDateFormatterShortStyle,NSDateFormatterMediumStyle或NSDateFormatterLongStyle

答案 2 :(得分:0)

从 iOS 8 开始,mysql> SELECT sID_contents_p, sID FROM `ttt` ORDER BY LENGTH( sID_contents_p ), sID_contents_p; +----------------+-----+ | sID_contents_p | sID | +----------------+-----+ | 1.1 | 1 | | 1.2 | 2 | | 1.3 | 3 | | 1.4 | 4 | | 1.5 | 5 | | 1.6 | 6 | | 1.7 | 7 | | 1.8 | 8 | | 1.9 | 9 | | 2.1 | 20 | | 2.2 | 21 | | 2.3 | 22 | | 2.4 | 23 | | 2.5 | 24 | | 2.6 | 25 | | 2.7 | 26 | | 2.8 | 27 | | 2.9 | 28 | | 3.1 | 31 | | 3.2 | 32 | | 3.3 | 33 | | 3.4 | 34 | | 3.5 | 35 | | 3.6 | 36 | | 3.7 | 37 | | 3.8 | 38 | | 3.9 | 39 | | 4.1 | 40 | | 4.2 | 41 | | 5.1 | 42 | | 5.2 | 43 | | 5.3 | 44 | | 5.4 | 45 | | 5.5 | 46 | | 5.6 | 47 | | 5.7 | 48 | | 5.8 | 49 | | 5.9 | 50 | | 6.1 | 55 | | 6.2 | 56 | | 6.3 | 57 | | 6.4 | 58 | | 6.5 | 59 | | 6.6 | 60 | | 6.7 | 61 | | 6.8 | 62 | | 6.9 | 63 | | 7.1 | 66 | | 7.2 | 67 | | 7.3 | 68 | | 7.4 | 69 | | 7.5 | 70 | | 7.6 | 71 | | 7.7 | 72 | | 7.8 | 73 | | 7.9 | 74 | | 8.1 | 84 | | 8.2 | 85 | | 8.3 | 86 | | 8.4 | 87 | | 8.5 | 88 | | 1.10 | 10 | | 1.11 | 11 | | 1.12 | 12 | | 1.13 | 13 | | 1.14 | 14 | | 1.15 | 15 | | 1.16 | 16 | | 1.17 | 17 | | 1.18 | 18 | | 1.19 | 19 | | 1.20 | 89 | | 2.10 | 29 | | 2.11 | 30 | | 2.12 | 90 | | 5.10 | 51 | | 5.11 | 52 | | 5.12 | 53 | | 5.13 | 54 | | 6.10 | 64 | | 6.11 | 65 | | 7.10 | 75 | | 7.11 | 76 | | 7.12 | 77 | | 7.13 | 78 | | 7.14 | 79 | | 7.15 | 80 | | 7.16 | 81 | | 7.17 | 82 | | 7.18 | 83 | +----------------+-----+ 90 rows in set (0.07 sec) 可以通过调用 setLocalizedDateFormatFromTemplate:

为您处理此问题
DateFormatter