我怎样才能得到一个tableview来计算每行1天(例如:星期一6月10日=第1行...星期二6月11日第2行)在xcode 7中使用swift在标签上加盖时间戳?我知道如何获得当前时间,但我需要它计算7天,并将日期保留到本周开始。
答案 0 :(得分:0)
您应该查看NSDateComponents
和NSCalendar
。例如,如果您希望从星期一开始获取当前周的日期,您可以说:
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]