相关疑难解决方法(0)

如何从NSDate对象检索午夜过后的小时数?

我需要从iPhone项目中的UIDatePicker控件中检索午夜过后的小时数.datePickerMode设置为UIDatePickerModeTime,所以用户只能设置时间,没有日期.当用户完成并关闭UIDatePicker所在的视图时,可能会检索以下日期(作为示例):

NSDate *returnTime = timePicker.date;
NSLog(@"returnTime: %@", returnTime); // returns for example @"1970-01-01 10:13:00 PM +0000"
Run Code Online (Sandbox Code Playgroud)

如上所述,我正在寻找午夜过后的小时数.在上面的示例中,该值应该是22.我想通过创建一个NSDateFormatter对象来实现这一点,并让它以24小时时钟格式提取一天中的小时,因此使用setDateFormat:@"H"(大写H而不是'h'):

NSDateFormatter *formatHour = [[NSDateFormatter alloc] init];
[formatHour setDateFormat:@"H"];
NSInteger intHoursPastMidnight = [[formatHour stringFromDate:returnTime] integerValue];
Run Code Online (Sandbox Code Playgroud)

然而,这并不总是按预期工作.当用户在系统范围的首选项(即用户使用AM/PM)中禁用24小时时,intHoursPastMidnight将包含10而不是22.10确实是可见的价值UIDatePicker,但我原本期望将NSDateFormatter其转换22@"H".

这有什么不对?我的转换假设不正确吗?这是UIDatePicker的错误吗?我如何解决问题,因此我基本上可以访问UIDatePicker中设置的午夜过后的小时数,与用户的12或24小时时钟偏好无关?无论如何这是要走的路吗?

明确的最终目标是检索午夜过后的分钟数(所以小时*60 +分钟,价值总是在0和1440之间).

date objective-c nsdate ios

4
推荐指数
1
解决办法
3845
查看次数

标签 统计

date ×1

ios ×1

nsdate ×1

objective-c ×1