2016-12-30 6 views
1

Поскольку сегодня Friday, что составляет 6 согласно NSCalendar. Я могу получить это, используя следующиеКак вычесть компоненты даты?

Calendar.current.component(.weekday, from: Date()) 

Как получить будний компонент Saturday на прошлой неделе, которая должна быть 7?

Если у меня Calendar.current.component(.weekday, from: Date()) - 6. Я получаю 0, что является недопустимым компонентом.

+0

Вы хотите дату последней субботы? –

+0

Нет, мне нужен компонент, который равен 7, в основном мне нравится знать, как вычитать компоненты. Например, понедельник равно 2. Если я хочу знать компонент дня, за 3 дня до этого, это пятница, которая должна быть 6. Но если я делаю 2 - 3, я получаю -1, что является недопустимым. Надеюсь, я понятен – Coder221

+0

Вам нужно получить дату, а затем вычесть из этого день, а не только минус компонент – Tj3n

ответ

2

Попробуйте это, вы должны получить дату первого вычесть из него снова:

var dayComp = DateComponents() 
dayComp.day = -6 
let date = Calendar.current.date(byAdding: dayComp, to: Date()) 
Calendar.current.component(.weekday, from: date!) 
+0

Это решение работает отлично. – Coder221

2

Для этого сначала нужно получить эту дату с помощью calendar.date(byAdding:value:to:), а затем получить номер дня от него.

extension Date { 
    func getDateFor(days:Int) -> Date? { 
     return Calendar.current.date(byAdding: .day, value: days, to: Date()) 
    } 
} 

Теперь просто используйте эту функцию и получите свои дни.

if let date = Date().getDateFor(days: -6) { 
    print(Calendar.current.component(.weekday, from: date)) 
} 
+1

Цените это :) – Coder221

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