How to print name of the day of the week?

后端 未结 2 1820
余生分开走
余生分开走 2020-12-20 10:14

Im trying to print out the name of the day of the week i.e Monday, Tuesday, Wednesday. I currently have this bit of code that does just that. I was wondering if there is a w

相关标签:
2条回答
  • 2020-12-20 11:10

    You are using the wrong date format. The correct format is "yyyy-M-d". Besides that you can use Calendar property weekdaySymbols which returns the weekday localized.

    func getDayOfWeek(_ date: String) -> String? {
        let formatter  = DateFormatter()
        formatter.dateFormat = "yyyy-M-d"
        formatter.locale = Locale(identifier: "en_US_POSIX")
        guard let todayDate = formatter.date(from: date) else { return nil }
        let weekday = Calendar(identifier: .gregorian).component(.weekday, from: todayDate)
        return Calendar.current.weekdaySymbols[weekday-1] // "Monday"
    }
    

    Another option is to use DateFormatter and set your dateFormat to "cccc" as you can see in this answer:

    extension Formatter {
        static let weekdayName: DateFormatter = {
            let formatter = DateFormatter()
            formatter.dateFormat = "cccc"
            return formatter
        }()
        static let customDate: DateFormatter = {
            let formatter  = DateFormatter()
            formatter.dateFormat = "yyyy-M-d"
            formatter.locale = Locale(identifier: "en_US_POSIX")
            return formatter
        }()
    }
    extension Date {
        var weekdayName: String { Formatter.weekdayName.string(from: self) }
    }
    

    Using the extension above your function would look like this:

    func getDayOfWeek(_ date: String) -> String? { Formatter.customDate.date(from: date)?.weekdayName }
    

    Playground testing:

    getDayOfWeek("2018-3-5")  // Monday
    Date().weekdayName        // Thursday
    
    0 讨论(0)
  • 2020-12-20 11:12

    Use this function:

    func DayOfWeek(date: String) -> String?
    {
        let dateFormatter  = DateFormatter()
        dateFormatter.dateFormat = "yyyy-M-d"
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        guard let _date = dateFormatter.date(from: date) else { return nil }
        let weekday = Calendar(identifier: .gregorian).component(.weekday, from: _date)
        return Calendar.current.weekdaySymbols[weekday-1]
    }
    
    0 讨论(0)
提交回复
热议问题