Получить будний день с даты - Swift 3

Я немного огляделся, но не нашел быстрый ответ для этого в быстром 3. Я получаю будний день следующим образом:

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

Но вместо этого я хотел бы получить будний день определенной даты. Как это делается? Thanx

Ответ 1

Предположительно, у вас уже есть Date?

let weekday = Calendar.current.component(.weekday, from: myDate)

Может быть, вам нужно название дня недели?

let f = DateFormatter()

f.weekdaySymbols[Calendar.current.component(.weekday, from: Date())]

Изучите NSCalendar/DateComponents api или отредактируйте свой вопрос, чтобы быть более конкретным, если вам нужна помощь с DateComponents api.

Ответ 2

let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
//OR dateFormatter.dateFormat = "EEEE, MMMM dd, yyyy"
let currentDateString: String = dateFormatter.string(from: date)
print("Current date is \(currentDateString)")

Текущая дата - понедельник, 29 июня 2017 г.

Ответ 3

Чтобы получить локальный формат, вы можете использовать:

extension Date{

func stringValueFullWithTime()-> String?{
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .full
    dateFormatter.timeStyle = . short
    dateFormatter.locale = Locale.current
    return dateFormatter.string(from: self)
}

Это напечатает как немецкий локальный язык:
Sonntag, 11. ноября 2018 г 11:17

Ответ 4

Если вы хотите компонент dayNumber в TimeZone

func dayNumberOfWeek() -> Int? {
    let timeZone = TimeZone(abbreviation: "EDT")
    let component =  Calendar.current.dateComponents(in: timeZone!, from: self)
    return  component.day
}

Ответ 5

Swift4 получает день недели от DateFormatter

 func getTodayWeekDay()-> String{
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "EEEE"
        let weekDay = dateFormatter.string(from: Date())
        return weekDay
  }