2016-07-04 1 views
0

Чтобы найти начало и конец текущей недели мне удалось это сделать:Как узнать начало и конец дня предыдущей недели

extension NSDate { 
    static func week() -> (NSDate, NSDate) { 
     let calendar = NSCalendar.currentCalendar() 
     calendar.firstWeekday = 2 
     var interval = NSTimeInterval(0) 
     var startOfWeek: NSDate? 
     var endOfWeek: NSDate! 
     calendar.rangeOfUnit(.WeekOfMonth, startDate: &startOfWeek, interval: &interval, forDate: NSDate()) 
     endOfWeek = startOfWeek?.dateByAddingTimeInterval(interval - 1) 

     return (startOfWeek!, endOfWeek) 
    } 
} 

Как я могу обновить этот код, чтобы получить начало/конец предыдущей недели?

+2

Просто позвоните в эту функцию и вычтите 7 дней с каждой возвращаемой даты? – zisoft

ответ

-3

Вы можете начать отсчет от недели назад:

let weekInSeconds: Double = 60 * 60 * 24 * 7 
calendar.rangeOfUnit(.WeekOfMonth, startDate: &startOfWeek, interval: &interval, forDate: NSDate(timeIntervalSinceNow: -weekInSeconds)) 

Теперь вы можете контролировать, который неделю (теперь) вы хотите увидеть, в прошлом будущего, используя кратные weekInSeconds (положительную для будущего недель, отрицательных на прошлые недели, 0 за эту неделю).

+0

Это неверно во всех регионах с летним временем, когда день может быть 23, 24 или 25 часов. –

+0

Правильно - вам нужно будет использовать NSTimeZone, чтобы найти это и точно настроить weekInSeconds внутри функции. – deebugger

 Смежные вопросы

  • Нет связанных вопросов^_^