0

请帮助我使用日期格式化程序:我需要根据所选语言更改日期格式并选择 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];

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

4

3 回答 3

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:例如使用当前语言环境值 ([NSLocalecurentLocale]) 或使用 [dateFormatter setLocale:...],指定所选语言

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

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

于 2013-08-27T16:24:47.303 回答
0

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

"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)]
于 2013-08-27T12:46:37.323 回答
0

从 iOS 8 开始,DateFormatter可以通过调用为您处理这个问题setLocalizedDateFormatFromTemplate:

NSDateFormatter *formatter = [NSDateFormatter new];
formatter.formattingContext = NSFormattingContextDynamic;
[formatter setLocalizedDateFormatFromTemplate:@"yyyy-MM-dd HH:mm"];
于 2021-04-18T10:04:02.560 回答