1507. Reformat Date

#### QUESTION:

Given a date string in the form Day Month Year, where:

Day is in the set {“1st”, “2nd”, “3rd”, “4th”, …, “30th”, “31st”}. Month is in the set {“Jan”, “Feb”, “Mar”, “Apr”, “May”, “Jun”, “Jul”, “Aug”, “Sep”, “Oct”, “Nov”, “Dec”}. Year is in the range [1900, 2100]. Convert the date string to the format YYYY-MM-DD, where:

YYYY denotes the 4 digit year. MM denotes the 2 digit month. DD denotes the 2 digit day.

Example 1:

``````Input: date = "20th Oct 2052"
Output: "2052-10-20"
``````

Example 2:

``````Input: date = "6th Jun 1933"
Output: "1933-06-06"
``````

Example 3:

``````Input: date = "26th May 1960"
Output: "1960-05-26"
``````

Constraints:

``````The given dates are guaranteed to be valid, so no error handling is necessary.
``````

#### SOLUTION:

``````class Solution {
var monthArr:[String] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
var monthString:[String] = ["01", "02" , "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]

var dayArr:[String] = ["1st", "2nd", "3rd" , "4th", "5th", "6th", "7th", "8th", "9th", "10th",
"11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", "20th",
"21st", "22nd", "23rd", "24th", "25th", "26th", "27th", "28th", "29th", "30th",
"31st"]
var dayString:[String] = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"]
func reformatDate(_ date: String) -> String {
var dateArr:[String] = date.components(separatedBy: " ")
var index:Int = dayArr.index(of: dateArr[0])!
var day:String = dayString[index]
index = monthArr.index(of: dateArr[1])!
var month:String = monthString[index]
var year:String = dateArr[2]
return year + "-" + month + "-" + day
}
}
``````
>