我通常对此非常好,但我遇到了NSDate
对象的问题。我需要一个NSDate
明天早上8点(相对)。我将如何做到这一点,什么是最简单的方法?如何在上午8点为明天创建日期对象
2
A
回答
14
下面是如何WWDC 2011 session 117 - Performing Calendar Calculations教导我:
NSDate* now = [NSDate date] ;
NSDateComponents* tomorrowComponents = [NSDateComponents new] ;
tomorrowComponents.day = 1 ;
NSCalendar* calendar = [NSCalendar currentCalendar] ;
NSDate* tomorrow = [calendar dateByAddingComponents:tomorrowComponents toDate:now options:0] ;
NSDateComponents* tomorrowAt8AMComponents = [calendar components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:tomorrow] ;
tomorrowAt8AMComponents.hour = 8 ;
NSDate* tomorrowAt8AM = [calendar dateFromComponents:tomorrowAt8AMComponents] ;
太糟糕了iOS不具备[NSDate dateWithNaturalLanguageString:@"tomorrow at 8:00 am"]
。谢谢,rmaddy,指出了。
1
在雨燕2.1:
let now = NSDate()
let tomorrowComponents = NSDateComponents()
tomorrowComponents.day = 1
let calendar = NSCalendar.currentCalendar()
if let tomorrow = calendar.dateByAddingComponents(tomorrowComponents, toDate: now, options: NSCalendarOptions.MatchFirst) {
let flags: NSCalendarUnit = [.Era, .Year, .Month, .Day]
let tomorrowValidTime: NSDateComponents = calendar.components(flags, fromDate: tomorrow)
tomorrowValidTime.hour = 7
if let tomorrowMorning = calendar.dateFromComponents(tomorrowValidTime) {
return tomorrowMorning
}
}
0
斯威夫特3+
private func tomorrowMorning() -> Date? {
let now = Date()
var tomorrowComponents = DateComponents()
tomorrowComponents.day = 1
let calendar = Calendar.current
if let tomorrow = calendar.date(byAdding: tomorrowComponents, to: now) {
let components: Set<Calendar.Component> = [.era, .year, .month, .day]
var tomorrowValidTime = calendar.dateComponents(components, from: tomorrow)
tomorrowValidTime.hour = 7
if let tomorrowMorning = calendar.date(from: tomorrowValidTime) {
return tomorrowMorning
}
}
return nil
}
相关问题
- 1. php 8天创建的日期
- 2. 如何在android上每天每小时给予背景通知(例如上午7点到上午8点,上午9点,上午9点00分)
- 3. 检查日期时间后的今天上午8点服务器
- 4. 如何获得第二天上午8点的秒数?
- 5. 获取前一天午夜的日期时间对象
- 6. Timepicker:创建日期对象
- 7. 如何计算今天上午00:00:00的日期?
- 8. 将日期对象分为天
- 9. 在春天创建对象
- 10. 输出日期到上午/下午
- 11. Htaccess在某个日期上午12点到下午6点重定向
- 12. 获取日期减去1的一天,但在exacty上午04点
- 13. Fullcalendar:开始一天早上8点,而不是午夜
- 14. 春天JSON日期为Java日期对象
- 15. 如何将阿拉伯字符串日期转换为java 8日期对象?
- 16. 如何查询ISO日期为今天的对象?
- 17. 如何为一个月的第31天创建时间日期?
- 18. 如何获得PHP时间明天下午6点CST?
- 19. 如何使用目标c在早上6点获取明天的日期?
- 20. 如何在Java中创建对象时执行日期?
- 21. 如何在jquery日期选择器上禁用“仅限明天”?
- 22. 如何在上午8点进行每日通知? (斯威夫特3)
- 23. 如何检查时间是昨天上午9点到今天上午9点之间的Ruby?
- 24. 为什么不显示日期上午或下午
- 25. 类型错误创建日期对象
- 26. 根据创建日期列出对象
- 27. SPWebApplication对象的创建日期?
- 28. 在Windows Phone 8上创建可缩放图像对象8
- 29. 如何在午夜获得今天的NSDate对象?
- 30. 如何上午12点每天在运行PHP脚本
基于标签,这个问题似乎是为iOS。 'dateWithNaturalLanguageString:'方法仅适用于OSX,不适用于iOS。 – rmaddy 2013-03-07 03:02:53
好吧,现在它增加了8个小时我认为,但在上午8点,它不会增加一天,它会回到今天。虽然在明天只有一个是明天...这是我的控制台日志的所有三个日期http://cl.ly/NPH5 – 2013-03-07 05:09:09
而不是记录NSDate,你可以[使用NSDateFormatter来创建一个NSString]( http://i.stack.imgur.com/EXWgO.png)并记录下来? – 2013-03-07 12:19:34