2015-02-11 26 views
1

嗨,我嘗試使用下面的代碼來獲取當天的當前小時和分鐘:組件輸出。分鐘意外。 iOS版雨燕

let calendar = NSCalendar.currentCalendar() 
    let components = calendar.components(.CalendarUnitHour, fromDate: NSDate()) 

// Concatenate time and minutes together 
let hour = components.hour 
let minute = components.minute 

println(components.hour) 
println(components.minute) 

輸出兩種:

components.hour output: 0 
components.minute output: 9223372036854775807 

這是目前00.30我在哪裏。但爲什麼components.minute打印這麼長的數字,這對我來說似乎不是第30分鐘。

此外,如果任何人都可以建議另一種獲取當前時間的方式,例如, 13:00

任何幫助非常感謝謝謝!

+2

你只要求'.CalendarUnitHour',那麼爲什麼你擔心什麼是分鐘?如果你想分鐘,也包括'.CalendarUnitMinute'。 – Rob 2015-02-11 00:46:04

+0

是的,我不知道我必須做什麼,我必須意外刪除'.CalendarUnitMinute',我確實在那裏。是的,這固定它謝謝你。 – 2015-02-11 00:51:29

+0

只是想指出在Swift中使用日期的時鐘。 https://github.com/naoty/Timepiece – 2015-02-11 01:22:02

回答

0

如果你想知道我想你應該創建一個NSDate的擴展只讀計算屬性返回任何日曆組件的小時或分鐘:

extension NSDate { 
    var minute: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitMinute, fromDate: self).minute } 
    var hour: Int { return NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitHour, fromDate: self).hour } 
} 


NSDate().hour  // 23 
NSDate().minute // 8 

如果你想獲得一個日期格式爲一個字符串,你可以使用NSDateFormatter如下:

extension NSDate { 
    var time:String { 
     let formatter = NSDateFormatter() 
     formatter.dateFormat = "HH:mm" 
     return formatter.stringFromDate(self) 
    } 
} 

NSDate().time // "23:12" 
+0

謝謝。這是做這件事的好方法。 – 2015-02-11 01:24:49

+0

歡迎您 – 2015-02-11 01:25:00

1

9223372036854775807NSUndefinedDateComponent值。這意味着NSDateComponents對象不具有該值。

您有|加入所需NSCalendarUnit S:

let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: NSDate()) 

或者,從iOS 8的,我們有得心應手component(_:fromDate:)方法得到的只是一個組成部分的價值。

let now = NSDate() 
let hour = calendar.component(.CalendarUnitHour, fromDate: now) 
let minute = calendar.component(.CalendarUnitMinute, fromDate: now) 
+0

感謝您爲此問題添加了一個合理的答案。 – 2015-02-11 13:32:56