Sma*_*ree 11 cocoa-touch objective-c uidatepicker ios
我有一个UIDatePickermm/dd/yy.它工作正常,但有一个问题:我设置minimum和maximum约会它,当用户试图选择禁止的日,月或年,该[datePicker date]属性开始工作错误.它会返回current day - 1或者current month - 1或current year - 1.我添加了一些图片,所以你可以看到情况.
这是对的
这是错误的(选择禁止日期后)
有人知道,我该如何解决这个问题?谢谢 !
UPD: 代码
[self.myDatePicker setMinimumDate:[NSDate date]];
[self.myDatePicker setMaximumDate:[[NSDate date] addTimeInterval:2 * 365.25 * 24 * 60 * 60]]; // to get upto 5 years
NSDate * now = [[NSDate alloc] init];
[self.myDatePicker setDate: now animated: YES];
self.myDatePicker.timeZone = [NSTimeZone localTimeZone];
self.myDatePicker.calendar = [NSCalendar currentCalendar];
Run Code Online (Sandbox Code Playgroud)
我的解决方案是将返回的日期设置为12:00 AM,因为NSDates在UTC中工作
NSDate * adjustedDate = [[NSCalendar currentCalendar] dateBySettingHour:12 minute:0 second:0 ofDate:sender.date options:0];
Run Code Online (Sandbox Code Playgroud)
同样,对于日期计算,你应该使用NSCalender方法而不是addTimeInterval
只需添加一行代码即可设置您的时区。
self.datePicker.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
Run Code Online (Sandbox Code Playgroud)
0是格林尼治标准时间00。根据您的时区添加。
它与时区和/或夏令时非常相似.但它必须非常微妙,因为代码看起来很好(在间隔旁边).现在我的问题是你是否在俄罗斯:
今年,克里姆林宫在保持夏令时方面做了几次来回摆动.其实我不确定,他们最后决定了什么.但也许它在Cocoa中没有得到正确反映.视频WWDC 2011视频"会议117 - 执行日历计算",主持人甚至提到这样的事情可能发生.
请尝试使用手动设置时间到中午的日期,因为这将使您远离这样的混乱.
世界刚刚在iOS 6中看到了类似的错误行为:DND-Always-Active错误.我打赌这是错误的日期格式(YYYY而不是yyyy)
还要尝试首先在选择器上设置timezone属性,并为其分配一个手动实例化的公历.
| 归档时间: |
|
| 查看次数: |
7781 次 |
| 最近记录: |