Table of Contents
Description: Reformat Date
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
1 2 |
<strong>Input:</strong> date = "20th Oct 2052" <strong>Output:</strong> "2052-10-20" |
Example 2
1 2 |
<strong>Input:</strong> date = "6th Jun 1933" <strong>Output:</strong> "1933-06-06" |
Example 3
1 2 |
<strong>Input:</strong> date = "26th May 1960" <strong>Output:</strong> "1960-05-26" |
Constraints
- The given dates are guaranteed to be valid, so no error handling is necessary.
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
class Solution { public String reformatDate(String date) { String[] month = new String[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; String[] da = date.split(" "); String DD = getDay(da[0]); String MM = getMonth(da[1], month); String YYYY = da[2]; return YYYY+"-"+MM+"-"+DD; } private String getDay(String d){ int day = 0; for(int i=0;i<d.length();i++){ char c = d.charAt(i); if(Character.isDigit(c)){ day = day*10+(c-'0'); } else { break; } } return day < 10?"0"+day:day+""; } private String getMonth(String m, String[] month){ int mm = 0; for(int i=0;i<month.length;i++){ if(m.equals(month[i])){ mm=i+1; break; } } return mm<10?"0"+mm:mm+""; } } |