我如何得到一个tableview计算每行1天(例如:星期一6月10日=第1行...周二6月11日第2行)使用swift

时间:2016-08-02 19:04:27

标签: ios swift xcode

我怎样才能得到一个tableview来计算每行1天(例如:星期一6月10日=第1行...星期二6月11日第2行)在xcode 7中使用swift在标签上加盖时间戳?我知道如何获得当前时间,但我需要它计算7天,并将日期保留到本周开始。

1 个答案:

答案 0 :(得分:0)

您应该查看NSDateComponentsNSCalendar。例如,如果您希望从星期一开始获取当前周的日期,您可以说:

func datesForCurrentWeek() -> [NSDate]
{
    let date = NSDate()
    let calendar = NSCalendar.currentCalendar()

    let components = calendar.components([.Weekday], fromDate: date)
    let weekday = components.weekday == 1 ? 8 : components.weekday

    var weekArray = [NSDate]()

    for i in 2 ... 8
    {
        let components = NSDateComponents()
        components.day = i - weekday
        weekArray.append(calendar.dateByAddingComponents(components, toDate: date, options: [])!)
    }
    return weekArray
}

在这里,您只需确定当周的当天是什么,然后创建一个包含它的数组以及包含该周的其他六天。您还需要移动它,因此星期一是本周的开始,因为星期日是默认值。

然后你可以创建一个像" dateStringArray"将日期保存为字符串。例如:

let datesArray = datesForCurrentWeek()
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .FullStyle
self.dateStringArray = datesArray.map{
    dateFormatter.stringFromDate($0)
}

然后在cellForRowAtIndexPath中,您可以填充您的单元格:

cell.textLabel.text = self.dateStringArray[indexPath.row]

有关NSDateComponents的更多信息,请参阅herehere.