gpt4 book ai didi

objective-c - iOS:忽略年份的日期组件

转载 作者:行者123 更新时间:2023-11-29 13:41:36 24 4
gpt4 key购买 nike

我写了一个应用程序让用户在日期选择器上输入一个日期,他们会在日期临近前 3 天按下一个按钮来安排本地通知。唯一的问题是,我将如何编辑此代码以不考虑用户输入的年份?因为他们可能会输入类似 1980 的年份,这显然已经过去了。

我尝试删除 [dateComps setYear:[dateComponents year]];,但这会导致通知立即触发。我还尝试从日期组件中删除那个和 NSYearCalendarUnit,但同样的事情发生了。任何帮助深表感谢!这是我的代码:

- (IBAction)scheduleNotifButton:(id)sender {
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];

NSDate *pickerDate = [self.datePicker date];

NSDateComponents *dateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit )
fromDate:pickerDate];
NSDateComponents *timeComponents = [calendar components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit )
fromDate:pickerDate];

NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:[dateComponents day]];
[dateComps setMonth:[dateComponents month]];
[dateComps setYear:[dateComponents year]];
[dateComps setHour:13];
[dateComps setMinute:30];
[dateComps setSecond:[timeComponents second]];
NSDate *itemDate = [calendar dateFromComponents:dateComps];

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.fireDate = itemDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];

localNotif.alertBody = @"Event is in 3 days!";
localNotif.alertAction = nil;

localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 0;

[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];

}

最佳答案

根据要求:

如果您忽略输入的年份并将其替换为当前年份会怎么样?

关于objective-c - iOS:忽略年份的日期组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8975673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com