Swift NSDate仅创建带小时和分钟的var

时间:2016-02-19 05:00:10

标签: swift nsdate

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

我有

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 ...然后我告诉从最后删除()....我不断收到错误。有一个简单的解决方案吗? 感谢

3 个答案:

答案 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
    }

...