目前我正在尝试在我的应用和我的应用中设置一个激活
将设定的小时和分钟设置为当前年度的方法
- (NSDate *)timeAsDate {
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
dateComponents.hour = self.hour;
dateComponents.minute = self.minute;
NSLog(@"HOUR %ld, MINUTE %ld", (long)dateComponents.hour,
(long)dateComponents.minute);
// Output HOUR 16, MINUTE 1
return [[NSCalendar currentCalendar] dateFromComponents:dateComponents];
}
消防日期方法
self.notif.fireDate = [self.time timeAsDate];
NSLog(@"Alarm: %@", [self.time timeAsDate]);
// Output
Alarm: 0001-01-01 23:53:58 +0000
我想弄清楚为什么timeAsDate没有正确返回。
答案 0 :(得分:0)
在swift:
func timeAsDate(hour: Int, minute: Int) -> NSDate {
let calendar = NSCalendar.currentCalendar()
return calendar.dateBySettingHour(hour, minute: minute, second: 0, ofDate: NSDate(), options: .MatchNextTime)!
}
timeAsDate(21, minute: 30) // today at 9:30 pm
timeAsDate(6, minute: 45) // today at 6:45 am
在Objective-C
中NSDate *timeAsDate(NSInteger hour, NSInteger minute) {
NSCalendar *calendar = [NSCalendar currentCalendar];
return [calendar dateBySettingHour:hour minute: minute second: 0 ofDate: [NSDate date] options: NSCalendarOptionsMatchNextTime];
}
timeAsDate(21, 30) // today at 9:30 pm
timeAsDate(6, 45) // today at 6:45 am
答案 1 :(得分:-1)
如果您尝试返回 a NSDate
,可以采用一种方便的方法:
NSDate *today = [NSDate date];
只要您想要访问今天的日期,就可以调用它。我不确定你的方法timeAsDate
的目的是什么?
您不想使用NSDateComponents
或NSDateFormatter
,除非您想要操纵日期的值,或者读取NSDate
的特定方面{1}}价值。这是因为NSDate
实际上是自1970年以来一直在运行的计数秒。这对大多数人来说非常混乱,但HERE是一个很棒的NSDate
快捷指南。
您当前的代码正在构建一个日期(请参阅我的链接)您要访问当前日期的目的是调用方便方法[NSDate date]
,该方法返回Number自1970年以来的秒数 - 也称为Epoch或Unix时间戳。
对于格式化和解析,请结帐this。
祝你好运,我希望这对你有所帮助!
我不确定你的“被炒作”是什么,但如果你想在将来做某事,在“今天”之后的一段特定时间..那么我相信这应该有所帮助:
忽略对 TimeAfterTime 程序的引用。相反,请查看未来日期调用的假设情景!这只是谷歌上this开发指南书的屏幕截图。