用nsdate比较两个date
在我的应用程序,我必须比较两次:当前(这是12:44),并给予我尝试:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"hh:mm"]; NSDate *neededDate = [[NSDate alloc] init]; neededDate = [dateFormatter dateFromString:@"14:45"]; if ([neededDate compare:[NSDate date]] == NSOrderedAscending) { NSLog(@"yes"); } else NSLog(@"no"); [neededDate release]; [dateFormatter release];
但是任何时候启动它,NSLog都会说“不”。 请,build议我错在哪里。 先谢谢你。
因为你需要的neededDate
将等于"1970/01/01 14:45"
。
您需要设置正确的年份和date。
你可以得到当前的年份,月份,并说,例如,使用下一个方法:
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]]; NSLog(@"Current year: %d", components.year); NSLog(@"Current month: %d", components.month); NSLog(@"Current day: %d", components.day);
我认为问题在这里:
[dateFormatter setDateFormat:@"hh:mm"];
应该:
[dateFormatter setDateFormat:@"HH:mm"];
因为现在“14:45”它返回(空)date
(这是除了之前的答案:)
这意味着在您的情况下,neededDate总是高于当前date。 这可能是因为您以24小时格式存储了48小时的string。 将string更改为HH:mm
另外,validation您存储在neededDate中的值。
这是一个小例子
NSDate *neededDate = [[NSDate date] dateByAddingTimeInterval:5]; if ([neededDate compare:[NSDate date]] == NSOrderedAscending) { NSLog(@"asc"); } else { NSLog(@"dec"); }
在这种情况下,dec将被打印。
- iPhone开发者有没有FaceTime API?
- 尝试读取不存在的文件夹`/ private / tmp / CocoaPods / Lint / Pods /
- iOS程序在单个UIViewController中使用多个UITableView
- Xcode 6将“共享扩展名”添加到目标时,存档并获得警告“跳过复制相位条,二进制代码已签名”
- 应用程序:didFinishLaunchingWithOptions:在创build目标控制器之前触发通知
- 在Objective C中设置for循环的最佳方法是什么?
- Xcode机器人fast y fastlane🚀Parte 1
- iOS上的iMovie VS LumaFusion-您真正需要哪个移动编辑应用程序?
- 当上传iOS应用程序到App Store时,Xcode试图匹配框架捆绑ID