我最近一直致力于使用法语版的应用程序NSLocalizedStrings
,到目前为止,一切都运行良好。
但我现在的问题是约会。我会根据情况以不同的格式在我的应用程序中显示日期。
例如:
-Fri Feb 22, 2013
-Monday February 18, 2013
-Feb 18
-Dec 5, 2012
问题是,法语日期不仅在月份名称方面有所不同,而且还有月,日,年的顺序。
例如:
-Dec 5, 2012 would be 5 Dec 2012
-Monday February 18, 2013 would be Lundi le 18 Fevrier 2013.
我的Localizable.string
文件中有个别的月/日名称,但我如何管理其显示顺序。
我是否应该使用if语句来检查当前的设备语言?:
NSString *currentLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
if([currentLanguage isEqualToString:@"fr"])
{
//Handle French logic
}
这可能不是最佳方式。
有什么想法吗?
答案 0 :(得分:3)
您应该使用NSDateFormatter并将其提供给您想要的NSLocale,如下所示:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"nl_NL"];
dateFormatter.dateFormat = @"EEEE d MMMM yyyy HH:mm";
'EEEE'是星期几的全名,在我的情况下,将以荷兰语显示。
答案 1 :(得分:1)
将日期转换为字符串时,将正确的区域设置设置为NSDateFormatter,然后日期格式化程序将根据您的用户设置处理所有格式的细节:
NSDateFormatter *formatter = ... // Create and setup formatter
[formatter setLocale:[NSLocale autoupdatingCurrentLocale]];
// Now you can convert date to string
答案 2 :(得分:1)
这可能更容易: 有些东西叫做
NSDateFormatterShortStyle,
NSDateFormatterMediumStyle
NSDateFormatterLongStyle
分别设置日期和时间组件:
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
如果是用户的语言,Ios会正确格式化。
答案 3 :(得分:1)
使用NSDateFormatter
。例如:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:162000];
NSString *formattedDateString = [dateFormatter stringFromDate:date];
NSLog(@"formattedDateString: %@", formattedDateString);
NSDateFormatterMediumStyle
会根据用户的偏好(英语,法语等)自动设置日期格式。
如果您需要自定义样式且应用程序在iOS 4.0+中运行,您可以在日期格式化程序中使用自定义模板:
NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"EdMMMyyy" options:0
locale:[NSLocale currentLocale]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:formatString];
NSString *todayString = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"todayString: %@", todayString);
答案 4 :(得分:0)
在尝试使用NSDateFormatter和模板(来自Unicode Technical Standard #35)之前,我会在localizedStringFromDate:dateStyle:timeStyle:
中尝试类函数NSDateFormatter
:
示例:
[NSDateFormatter localizedStringFromDate:dateTime dateStyle:NSDateFormatterMediumStyle timeStyle:NSDateFormatterNoStyle];
您可以选择文档中详述的各种长度的不同日期和时间输出。
Apple文档:NSDateFormatter localizedStringFromDate:dateStyle:timeStyle: