Swift NSDate 创建仅包含小时和分钟的变量

Swift NSDate create var with hour and minute only

我刚才问了一个问题,关于如何获取当前时间的小时和分钟,而不用担心年月日,那个问题就解决了。我现在尝试应用相同的逻辑来创建自定义时间(以小时分钟格式),但我收到错误

我有

let time1 = NSDateComponents()
    time1.hour = 8
    time1.minute = 54

    let date1: NSDate = calendar.dateFromComponents(time1)!

我尝试使用之前的答案使其看起来像

 let date1: NSDate = calendar.components([ .Hour, .Minute ], fromDate: time1())

但我得到 "ambiguous reference to member 'components'"

我从那里删除了 : NSDate...然后我告诉我从末尾删除 ()...而且我不断收到错误。有一个简单的解决方法吗? 谢谢

我想这是因为你没有打电话给 NSCalendar。由于您只需要小时和分钟,您可以 return 字典

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,如果你愿意的话。

快速方法,从字符串元素获取 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)

这是我同学帮我实现的解决方案

.....

 let date6 = NSDateComponents()
    date6.hour = 17
    date6.minute = 3

    datesArray = [date2, date3, date4, date5, date6]

datesArray.sortInPlace {
        NSNumber(integer:([=10=].minute + ([=10=].hour * 60))).compare(NSNumber(integer: (.minute + (.hour * 60)))) == .OrderedAscending
    }

.....