2013-05-02 61 views
1

我尝试使NSDateFormatter将其语言环境设置为德语,但它失败。在下面的代码中,dateFrom被成功解析,dateTo不成功。NSDateFormatter不能解析德语日期

注意:在德语中,它是非洲语言,而不是2月。

NSLocale *germanLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"de_DE"]; 
NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"dd. MMMM" options:0 
                  locale:germanLocale]; 

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:formatString]; 
NSDate *dateFrom = [dateFormat dateFromString:@"20. September"]; 
NSDate *dateTo = [dateFormat dateFromString:@"20. Februar"]; 

回答

2

尝试设置NSDateFormatter的区域:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
dateFormat.locale = germanLocale; 
[dateFormat setDateFormat:@"dd. MMMM"]; 
NSDate *dateFrom = [dateFormat dateFromString:@"20. September"]; 
NSDate *dateTo = [dateFormat dateFromString:@"20. Februar"]; 
+0

感谢,这个工作。但为什么在dateFormatFromTemplate函数中设置locale不起作用? – 2013-05-02 14:40:07

+0

,因为formatString只是一个字符串,它不包含区域设置信息。日期模板可以被修改(例如,日期组件的顺序可以根据语言环境而改变),但它仍然只返回一个字符串。请参阅该方法的文档 - 有一个例子显示它如何做以及它做了什么。 – Jeepston 2013-05-02 14:43:57