如何獲取單個NSDate的NSDateComponents?我不想要兩個日期之間的差異組件,只是NSDate的秒,分,小時,日,月和年?NSDate的NSDateComponents
21
A
回答
38
這裏有一個例子在Apple docs,清單3:獲取日期的組件:
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =
[gregorian components:(NSDayCalendarUnit |
NSWeekdayCalendarUnit) fromDate:today];
NSInteger day = [weekdayComponents day];
NSInteger weekday = [weekdayComponents weekday];
請注意,你必須「或」在一起calendar units要在components
方法的調用。
6
使用NSCalendar的方法:
- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date
,如:
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDate *date = [NSDate date];
NSCalendar * cal = [NSCalendar currentCalendar];
NSDateComponents *comps = [cal components:unitFlags fromDate:date];
0
斯威夫特
2.X你想要的成分被送到這個樣子。
let gregorianCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let weekdayHourMinutes = gregorianCalendar?.components([.Weekday, .Hour, .Minute], fromDate: date)
2
根據蘋果開發者API參考,DateComponents
有second
,minute
,hour
,day
,month
,year
實例屬性。
以下斯威夫特3遊樂場代碼展示瞭如何使用DateComponents
獲得從Date
例如秒,分鐘,小時,天,月,年組件:
import Foundation
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(abbreviation: "CET")!
let date = Date()
// Get seconds, minutes, hours, day, month and year
let components = calendar.dateComponents([.second, .minute, .hour, .day, .month, .year], from: date)
let seconds = components.second
let minutes = components.minute
let hours = components.hour
let day = components.day
let month = components.month
let year = components.year
// Print components
print(String(reflecting: seconds)) // prints Optional(33)
print(String(reflecting: minutes)) // prints Optional(42)
print(String(reflecting: hours)) // prints Optional(22)
print(String(reflecting: day)) // prints Optional(17)
print(String(reflecting: month)) // prints Optional(12)
print(String(reflecting: year)) // prints Optional(2016)
/* ... */
// Set a formatter in order to display date
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .long
formatter.timeZone = TimeZone(abbreviation: "CET")
formatter.locale = Locale(identifier: "fr_FR")
print(formatter.string(from: date)) // prints 17/12/2016 22:42:33 UTC+1
相關問題
- 1. 來自NSDateComponents的NSDate
- 2. NSDate轉換NSDateComponents問題
- 3. 將NSDateComponents轉換爲NSDate
- 4. 從NSDateComponents創建的NSDate關閉的
- 5. NSDate和NSDateComponents返回錯誤的日期
- 6. 正從NSCalendar一個的NSDate和NSDateComponents
- 7. 設置NSDateComponents結果不正確NSDate
- 8. NSDate比較結果與NSDateComponents轉換後沒有NSOrderedSame
- 9. 從[NSDateComponents組件:fromDate:toDate:options:]發佈NSdate時出錯
- 10. 在MonoTouch中從NSDate(或DateTime)獲取NSDateComponents實例
- 11. NSDateComponents/NSDate:得到最後一個星期日
- 12. iPhone有沒有辦法從NSDateComponents獲得nsdate
- 13. NSDateComponents
- 14. Swift:無法將類型'NSDate'的值轉換爲期望的參數類型'NSDateComponents'
- 15. 這是使用NSDateComponents將日期添加到NSDate的正確方法嗎?
- 16. NSDateComponents將UTC日期轉換爲本地時區,搞亂了「今天」nsdate比較
- 17. NSDateComponents/NSCalendar泄漏
- 18. 混淆了NSDateComponents
- 19. 關於NSDateComponents TimeZone
- 20. NSDateComponents VS timeIntervalSince
- 21. NSDateComponents包裝
- 22. NSDateComponents返回零
- 23. 如何獲得兩個NSDateComponents之間的NSDateComponents?
- 24. NSDateComponents指定AM/PM?
- 25. NSCalendar dateFromComponents:VS NSDateComponents日期
- 26. 從NSDateComponents獲取MAX_INT
- 27. 崩潰在NSDateComponents WEEKOFYEAR
- 28. 正確使用NSDateComponents
- 29. 調用setHours在NSDateComponents
- 30. NSDateComponents setTimeZone NSInvalidArgumentException在iOS的3.1
你打我,哈哈! +1 –
@martin clayton,嗨,我已經爲NSDateComponents設置了特定的時間,時間和秒數,現在我想再次與這些NSDateComponents組成日期。我怎樣才能做到這一點? –