How can I get the current month as String? [duplicate]

I need to get may as a current month, but I could not do. How can I achieve this?

   let date = NSDate()
   let calendar = NSCalendar.currentCalendar()
   let components = calendar.components([.Day , .Month , .Year], fromDate: date)
   
   let year =  components.year
   let month = components.month
   let day = components.day

I have done this but does not worked.


Solution 1:

let now = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "LLLL"
let nameOfMonth = dateFormatter.string(from: now)

Solution 2:

If you are using Swift 3.0 then extensions and Date class are great way to go.

try below code

extension Date {
    var month: String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "MMMM"
        return dateFormatter.string(from: self)
    }    
}

Get work with it like below:

 let date = Date()
 let monthString = date.month

Solution 3:

Swift 3.0 and higher

You use DateFormatter() see below for this used in an extension to Date.

Add this anywhere in your project in global scope.

extension Date {
    func monthAsString() -> String {
            let df = DateFormatter()
            df.setLocalizedDateFormatFromTemplate("MMM")
            return df.string(from: self)
    }
}

Then you can use this anywhere in your code.

let date = Date()
date.monthAsString() // Returns current month e.g. "May"