我刚才问了一个问题,关于如何得到当前时间的小时和分钟而不用担心年月日,这个问题就解决了。我现在尝试应用相同的逻辑来创建自定义时间(以小时分钟格式),但我得到一个错误
我有
let time1 = NSDateComponents()
time1.hour = 8
time1.minute = 54
let date1: NSDate = calendar.dateFromComponents(time1)!
我尝试使用上一个答案使其看起来像
let date1: NSDate = calendar.components([ .Hour, .Minute ], fromDate: time1())
但我得到了“对成员'组件的模糊引用'”
从那里我删除:NSDate ...然后我告诉从最后删除()....我不断收到错误。有一个简单的解决方案吗? 感谢
答案 0 :(得分:2)
快速方法,从字符串元素中获取nsdate,然后将nsdate转换回字符串,如果您愿意:
let formatter = NSDateFormatter()
formatter.dateFormat = "HH:mm"
let hour = 08
let minutes = 32
let time = formatter.dateFromString("\(hour):\(minutes)")!
let finalTime = formatter.stringFromDate(time)
print(time)
print(finalTime)
答案 1 :(得分:0)
我认为是因为你没有打电话给NSCalendar
。由于您只需要小时和分钟,您可以返回字典
func getHourMinutes(fromDate: NSDate) -> [String:Int] {
var timeDic = [String:Int]()
let dC = NSDateComponents()
let cC = NSCalendar.currentCalendar()
if let hour = Int(currentCalendar.component(NSCalendarUnit.Hour, fromDate: fromDate)) {
timeDic.append["hour":hour]
}
if let minutes = Int(currentCalendar.component(NSCalendarUnit.Minute, fromDate: fromDate)) {
timeDic.append["minutes":minutes
}
return timeDic
}
然后,如果您愿意,可以调用键来设置新的NSDate。
答案 2 :(得分:0)
这是我的同学帮助我实现的解决方案
...
let date6 = NSDateComponents()
date6.hour = 17
date6.minute = 3
datesArray = [date2, date3, date4, date5, date6]
datesArray.sortInPlace {
NSNumber(integer:($0.minute + ($0.hour * 60))).compare(NSNumber(integer: ($1.minute + ($1.hour * 60)))) == .OrderedAscending
}
...