Objective c UIDatePicker和日期选择
正在尝试使用uidatepicker。具有一个在日期选择器的值更改时激发的方法。它传递了日期值,但当我尝试获取该日期时,我的天数部分表现得很愚蠢。它返回自年初以来的天数,而不是实际的月份天数。比如说2月3日,而不是3日,我得到34分Objective c UIDatePicker和日期选择,objective-c,nsdate,Objective C,Nsdate,正在尝试使用uidatepicker。具有一个在日期选择器的值更改时激发的方法。它传递了日期值,但当我尝试获取该日期时,我的天数部分表现得很愚蠢。它返回自年初以来的天数,而不是实际的月份天数。比如说2月3日,而不是3日,我得到34分 -(IBAction)datePickerValueChanged: (id)sender; { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [da
-(IBAction)datePickerValueChanged: (id)sender;
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYY-MM-DD"];
self.date = [dateFormatter stringFromDate:[sender date]];
NSLog(@"date: %@", [dateFormatter stringFromDate:[sender date]]);
[dateFormatter release];
}
4月12日,我得到:
2011-10-27 14:22:41.939 Satshot[12789:40b] date02: 2011-04-102
我猜是我的dateformatter造成的,但我不明白为什么。您使用了错误的格式说明符。您需要
“yyyy-MM-dd”
更新、YYYY和DD都是错误的。感谢@jrturton.来自:
它使用yyyy指定年份组件。一个常见的错误是使用
YYYY。yyyy指定日历年,而yyyy指定年份
(指“一年中的一周”),用于ISO年-周日历。大多数
案例yyyy和yyyy产生相同的数字,但它们可能是相同的
不一样。通常,您应该使用日历年
此外,DD
应该是DD
但是为什么不直接用日期在内部保存你的价值呢
另外,请注意,创建日期格式化程序是一项昂贵的工作,当用户滚动浏览时,选择器视图上的valueChanged可能每秒调用数十次。如果必须使用格式化程序,请缓存它 你发现了DD,错过了YYYY,我发现了YYYY,错过了DD!所以你建议把我的格式化程序变成一个在viewDidLoad中设置的即时变量?或者valueChanged只是存储新的日期,当用户按下“选择”并让格式化程序在那里工作时?基本上只是防止每次值更改时都分配/释放格式化程序?实际上,我建议
self.date
应该是NSDate
而不是NSString
,并且只有在实际需要对值执行某些操作时才使用格式化程序,格式化程序是一个实例变量,因此您不会一直创建和销毁它。