2015-02-11 29 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