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

时间:2016-12-09 21:03:39

标签: xcode date swift3

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

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

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

6 个答案:

答案 0 :(得分:50)

大概你已经有Date了吗?

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

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

let f = DateFormatter()

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

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

答案 1 :(得分:36)

let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"

dateFormatter.dateFormat = "EEEE, MMMM dd, yyyy"
let currentDateString: String = dateFormatter.string(from: date)
print("Current date is \(currentDateString)")

当前日期是2017年6月29日星期一

答案 2 :(得分:0)

要获取本地格式,可以使用:

extension Date{

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

这将以德语显示:
Sonntag,2018年11月11日,晚上11:17

答案 3 :(得分:0)

  

如果要在TimeZone中使用dayNumber组件

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

答案 4 :(得分:0)

Swift4从DateFormatter获取工作日

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

答案 5 :(得分:0)

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

extension Date {

    var calendar: Calendar { Calendar.current }

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