KUNWOO MYUNG
KUNWOO MYUNG

Reputation: 215

Parsing a Swift String to Date, then Components

I have a date "2017-12-31" as a String.

What I want to get finally is only the month: "12" as a String.

So I thought that I can change it to Date using a date formatter

let formatter = DateFormatter()
formatter.dateFormat = "MM"

What do I do next?

Upvotes: 0

Views: 1269

Answers (3)

Ankit Prajapati
Ankit Prajapati

Reputation: 129

let dateString = "2017-12-31"    
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: Calendar.Identifier.iso8601)    formatter.timeZone = TimeZone(identifier:  TimeZone.autoupdatingCurrent.identifier)
formatter.dateFormat = "yyyy-MM-dd" 
let localDate = formatter.date(from: dateString) 
formatter.dateFormat = "MM" 
let strMonth = formatter.string(from: localDate!)
print("Month is:",strMonth)

Another way

let dateString = "2017-12-31"
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
let localDate = formatter.date(from: dateString)
let month = String(NSCalendar.current.component(.month, from: localDate!))
print(month)

Upvotes: 3

Sakir Sherasiya
Sakir Sherasiya

Reputation: 1572

Use below function for getting month from string file of date

func getMonthFromDateString(strDate: String) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd"
        let date = formatter.date(from: strDate) // Convert String File To Date
        formatter.dateFormat = "MM"
        let strMM = formatter.string(from: date!) // Convert date to string
        return strMM
}

Upvotes: 2

André Slotta
André Slotta

Reputation: 14030

First you have to use the DateFormatter to create a temporary Date object from your source String object. Then you have to use it to create your final String from the temporary Date object.

let dateString = "2017-12-31"
let dateFormatter = DateFormatter()

// set the dateFormatter's dateFormat to the dateString's format
dateFormatter.dateFormat = "yyyy-MM-dd"

// create date object
guard let tempDate = dateFormatter.date(from: dateString) else {
    fatalError("wrong dateFormat")
}

// set the dateFormatter's dateFormat to the output format you wish to receive
dateFormatter.dateFormat = "LL" // LL is the stand-alone month

let month = dateFormatter.string(from: tempDate)

Upvotes: 2

Related Questions