【问题标题】:Getting the correct date and set notification ios获取正确的日期并设置通知 ios
【发布时间】:2015-07-09 11:38:59
【问题描述】:

我正在尝试为每个星期六和星期日设置重复通知,但由于某种原因日期出现错误。这是我的代码

NSCalendar *calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |  NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitWeekday | NSCalendarUnitWeekOfYear | NSCalendarUnitWeekOfMonth |NSCalendarUnitWeekOfMonth;
NSDateComponents *comps = [calendar components:unitFlags fromDate:[NSDate date]];
NSDateComponents *dt = [[NSDateComponents alloc]init];
comps.hour   = hour;
comps.minute = [[goal.reminderTimeInfo valueForKey:@"minutes"] intValue];
[dt setMonth:[comps month]];
[dt setYear:[comps year]];
[dt setWeekOfMonth:[comps weekOfMonth]];
comps.weekday = 1;  //Sunday
[dt setWeekday:[comps weekday]];

NSDate *sundayDate = [calendar dateFromComponents:dt];

它假设放弃了

2015-07-05 19:00:00 +0000

但它的给予

2015-07-04 19:00:00 +0000

如果给本地通知一个特定的日期。例如它的星期天。它会在每个星期天触发吗?

【问题讨论】:

  • 2015-07-04 19:00:00 +0000触发

标签: ios nsdate nscalendar nsdatecomponents


【解决方案1】:

您没有更改 dt 的小时和分钟,而是更改了 comps。

NSCalendar *calendar = [NSCalendar currentCalendar];
    unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth |  NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitWeekday | NSCalendarUnitWeekOfYear | NSCalendarUnitWeekOfMonth |NSCalendarUnitWeekOfMonth;
    NSDateComponents *comps = [calendar components:unitFlags fromDate:[NSDate date]];
    NSDateComponents *dt = [[NSDateComponents alloc]init];

    dt.hour   = 19;
    dt.minute = 00;
    [dt setMonth:[comps month]];
    [dt setYear:[comps year]];
    [dt setWeekOfMonth:[comps weekOfMonth]];
    [dt setWeekday:1];

    NSDate *sundayDate = [calendar dateFromComponents:dt];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多