iphone - 更改NSDate的时间?

标签 iphone ios objective-c

我有两个首先从DatePicker获取的日期(self.datePicker.date),另一个是手动设置的NSDate(self.fireDate)。

我想将self.datePicker.date的时间添加到self.fireDate

我的逻辑是:I Follow this Question

NSCalendar *currentCalender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *timeComponents = [currentCalender components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:[self.datePicker date]];
    NSDateComponents *dateComponents = [currentCalender components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate: self.fireDate];
    [dateComponents setHour:timeComponents.hour];
    [dateComponents setMinute:timeComponents.minute];
    [dateComponents setSecond:timeComponents.second];
    NSDate *finalDate = [currentCalender dateFromComponents:dateComponents];

NSLog(@"%@", [self.datePicker date]);
NSLog(@"%@", finalDate);
NSLog(@"%@", self.fireDate);

请给我关于这个问题的任何建议。

提前致谢 ;)

最佳答案

NSCalendar的计算取决于日历的区域设置和时区。要获取正确的时间部分,您必须使用选择器的日历:

NSDateComponents *timeComponents = [self.datePicker.calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:[self.datePicker date]];
dateComponentsfinalDate可能应该根据用户在Settings.app中设置的当前日历来计算,该日历是从...
NSCalendar *currentCalender = [NSCalendar currentCalendar];

另一个猜测:所发布代码的缩进表明您没有粘贴所有真实代码。也许您在一个封闭范围内设置了fireDate,但从外部范围打印了另一个?

关于iphone - 更改NSDate的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19396887/

相关文章:

iphone - UITableViewController 最后一行被截断

ios - 如何在 S3 PutObjectRequest 完成时添加监听器?

iphone - sprite 套件游戏中的 iAd

ios - 使用 drawRect 方法绘制的线条不会滚动

iphone - 我应该重新发送针对iOS5优化的应用程序吗? (上周日/iOS4发送)

ios - 普通核心数据 vs 核心数据 + 魔法记录

iphone - 防止同时触摸多个按钮

ios - Xcode 10 svnX 问题

iphone - 释放实例变量会导致崩溃,但为什么呢?

ios - 仅在首次打开应用程序时显示教程 View