从日期获得工作日 - 斯威夫特3

Mar*_*dic 32 xcode date swift3

我已经环顾了一下,但没有在swift 3中找到快速答案.我今天平日就像这样:

let weekday = Calendar.current.component(.weekday, from: Date())
Run Code Online (Sandbox Code Playgroud)

但相反,我想获得给定日期的工作日.这是怎么做到的?感谢名单

Joe*_*els 62

想必你已经Date有了吗?

let weekday = Calendar.current.component(.weekday, from: myDate)
Run Code Online (Sandbox Code Playgroud)

也许你想要工作日的名字?

let f = DateFormatter()

f.weekdaySymbols[Calendar.current.component(.weekday, from: Date())]
Run Code Online (Sandbox Code Playgroud)

如果您需要DateComponents api的帮助,请调查NSCalendar/ DateComponentsapi或编辑您的问题以使其更具体.

  • 使用`Calendar`作为`.iso8601`和一个UTC日期,我从日历中得到的索引需要减去1.当Date是星期日时,我在`f.shortWeekdaySymbols [dayIndex]`得到一个超出范围的索引,因为我的日索引是'7` (10认同)
  • 对,-1在数组范围内. (4认同)

Yak*_* Ad 46

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)")
Run Code Online (Sandbox Code Playgroud)

现在的日期是2017年6月29日星期一

  • dateFormat在这里设置两次。那其他语言呢?您将如何处理以不同语言显示的不同日期格式,例如01/25/2018与25.01.2018? (2认同)

Suk*_*ukh 20

Swift5 从 DateFormatter 获取工作日

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

 //eg: // "EEEE" --> "Friday" 
       // "EEE"  --> "Fri"
Run Code Online (Sandbox Code Playgroud)


Giu*_*lli 6

默认情况下,工作日将第一个工作日视为星期日,如果您想支持通用上下文,请使用此扩展。

extension Date {

    var calendar: Calendar { Calendar.current }

    var weekday: Int {
        (calendar.component(.weekday, from: self) - calendar.firstWeekday + 7) % 7 + 1
    }
}
Run Code Online (Sandbox Code Playgroud)