Календарь вне зависимости от настроек - PullRequest
1 голос
/ 25 мая 2020

В приложении я использую дни недели для открытия достижений.

let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE"
let dayInWeek = dateFormatter.string(from: date)

   if dayInWeek == "Monday" {

    achiv = true
}

Я использую в приложении английский sh, русский и украинский языки. Проблема в том, что это условие действительно, если в телефоне используется английский sh язык. Помогите пройти этот метод, чтобы условия работали независимо от языка на устройстве .

Ответы [ 2 ]

3 голосов
/ 25 мая 2020

Вы можете использовать свойство weekday для DateComponents

let now = Date()

let today = Calendar(identifier: .gregorian).component(.weekday, from: now)

if today == 2 {
    print("It is Monday")
}

Обратите внимание, что я использую григорианский календарь явно, а не текущий календарь, поскольку значения дней недели могут отличаться в других календарях.

3 голосов
/ 25 мая 2020

Вы можете проверить день недели с помощью DateComponents:

let date = Date()
let weekday = Calendar.current.component(.weekday, from: date)
if weekday == 1 {
    print("Sunday")
} else if weekday == 2 {
    print("Monday")
}

Примечание. Проверка строки if weekday == "Monday" небезопасна, потому что в разных регионах строки разные.

...