我需要设置一个if / else语句,只比较两个NSDates的月份和日期 . 其中一个日期是使用UIDatePicker选择的,另一个是今天的日期 . 如果两者的月份和日期相同,则会发生一些事情,如果不是其他事情发生的话 .
这就是我目前设置它的方式,但它不起作用(else语句总是触发) . 不知道从哪里开始:
. H
@interface ViewController : UIViewController {
UIDatePicker *datePicker;
NSDate *pickedDate;
NSDateFormatter *pickedDateFormat;
NSString *pickedDateString;
NSDate *todaysDate;
NSDateFormatter *todaysDateFormat;
NSString *todaysDateString;
UILabel *label;
}
.M
- (IBAction)buttonToCompareDates:(id)sender {
// Sets date from date picker
pickedDate = [datePicker date];
pickedDateFormat = [[NSDateFormatter alloc] init];
[pickedDateFormat setDateFormat:@"MM/dd"];
pickedDateString = [pickedDateFormat stringFromDate:pickedDate];
// Sets today's date
todaysDate = [NSDate date];
todaysDateFormat = [[NSDateFormatter alloc] init];
[todaysDateFormat setDateFormat:@"MM/dd"];
todaysDateString = [todaysDateFormat stringFromDate:todaysDate];
// if/else statement
if (todaysDateString == pickedDateString) {
label.text = @"The dates match.";
} else {
label.text = @"The dates don't match.";
}
}
我认为这可行,但事实并非如此 . 我只需要匹配NSDates的月和日部分,因此我尝试将它们格式化为这些部分并比较字符串 . 问题是,即使日期匹配,我总是得到 "The dates don't match."
句子 . 不知道为什么,可以使用解释和正确的方法来解决这个问题 .
2 回答
你必须使用
代替
因为你必须比较字符串内容而不是它们的指针 .
您还可以使用相同的日期格式化程序优化您的实现:
比较字符串可以工作,但使用NSCalendar可能更有效: