我通常對此非常好,但我遇到了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