我确信我只是遗漏了一些东西。但是我已经搜索了几天试图找到如何显示一个4位数的年份显示NSDate与NSDateFormatterShortStyle样式。如果您有解决方案,请告诉我。这是我现在使用的代码。
[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease ];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
// add label for birth
UILabel *birthday = [[UILabel alloc] initWithFrame:CGRectMake(125, 10, 100, 25)];
birthday.textAlignment = UITextAlignmentRight;
birthday.tag = kLabelTag;
birthday.font = [UIFont boldSystemFontOfSize:14];
birthday.textColor = [UIColor grayColor];
birthday.text = [dateFormatter stringFromDate:p.Birth];
答案 0 :(得分:11)
以防万一有人在这里偶然发现'因为我在本地化的日期格式中需要2位数的年份,这是一个非常古老的问题,这是我的解决方案:
NSLocale* curLocale = [NSLocale currentLocale];
NSString* dateFmt = [NSDateFormatter dateFormatFromTemplate: @"ddMMyyyy"
options: 0
locale: curLocale];
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:dateFmt];
NSString* retText = [formatter stringFromDate:refDate];
return retText;
也许有人可以在某个时候使用它......
答案 1 :(得分:10)
如果您需要四位数年份,请使用您想要的确切格式设置dateformat:
。缺点是你失去了自动语言环境格式。
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"MM/dd/yyyy"];
...
birthday.text = [dateFormatter stringFromDate:p.Birth];
如果您需要本地化,那么您可以尝试修改短样式的日期格式。
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease ];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
if ([[dateFormatter dateFormat] rangeOfString:@"yyyy"].location == NSNotFound) {
NSString *fourDigitYearFormat = [[dateFormatter dateFormat] stringByReplacingOccurrencesOfString:@"yy" withString:@"yyyy"];
[dateFormatter setDateFormat:fourDigitYearFormat];
}
更新了Max Macleod的错误修正
答案 2 :(得分:1)
这是一个老线程,但是因为我试图做Dave想要和不能做的事情,因为没有给出的答案是正确的,这里是解决方案(如果有人想要同样的事情):
NSString *FormatString = [NSDateFormatter dateFormatFromTemplate:@"MM/dd/yyyy HH:mm" options:0 locale:[NSLocale currentLocale]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:FormatString];
//Parse date here with the formater (like [formatter stringFromDate:date])
[formatter release];
答案 3 :(得分:0)
kCFDateFormatterShortStyle 指定简短样式,通常仅限数字,例如“11/23/37”或“3:30 pm”。
适用于Mac OS X v10.3及更高版本。
在CFDateFormatter.h中声明。
NSDateFormatterShortStyle似乎没有给你4位数年。