I'm trying to parse a string "Nov 6, 2017 11:47:53 AM" to a Date through SimpleDateFormat but I'm not able to find the correct format to use. Someone can help me?
 
    
    - 4,162
- 4
- 18
- 31
 
    
    - 85
- 7
- 
                    1please show what you have tried, and what was the error/problem. The way you ask now you want somebody not to help you, but to do it instead of you. – Vladyslav Matviienko Nov 06 '17 at 11:31
- 
                    1please paste some code here to identify your problem. – Ratilal Chopda Nov 06 '17 at 11:33
- 
                    A tip for you: You can find your answer faster by searching existing questions and answers than by waiting for someone to type a new answer here. – Ole V.V. Nov 06 '17 at 11:35
- 
                    I recommend you consider [the modern Java date and time API known as JSR-310 or `java.time`](https://docs.oracle.com/javase/tutorial/datetime/) rather than the outdated `Date` and `SimpleDateFormat`. I know it’s not built-in on most Android phones yet, but you can get [ThreeTenABP](https://github.com/JakeWharton/ThreeTenABP) and start using it. – Ole V.V. Nov 06 '17 at 11:37
- 
                    Possible duplicate of [Java string to date conversion](https://stackoverflow.com/questions/4216745/java-string-to-date-conversion). – Ole V.V. Nov 06 '17 at 11:39
3 Answers
The template that should be able to parse this text is MMM d, yyyy hh:mm:ss a assuming that the hours of the day are in the range of 1-12. If they are in the range of 0-11 replace hh by KK.
 
    
    - 5,323
- 1
- 11
- 27
Use "MMM dd, yyyy hh:mm:ss aaa"
public class Tester {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Date date = new Date();
        //Nov 6, 2017 11:47:53 AM
        SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss aaa");
        //sdf.parse(source);
        System.out.println(sdf.format(date));
    }
}
Output :
Nov 06, 2017 04:35:20 AM
 
    
    - 955
- 1
- 7
- 16
Even on Android it’s worth considering trashing the long outdated classes Date and in particular SimpleDateFormat, it’s shown to be quite troublesome. I recommend getting ThreeTenABP. It will allow you to use the modern Java date and time API on Android (that’s three-ten for JSR-310, where the API was first described).
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM d, uuuu h:mm:ss a", Locale.ENGLISH);
    String stringToParse = "Nov 6, 2017 11:47:53 AM";
    LocalDateTime dateTime = LocalDateTime.parse(stringToParse, dtf);
The result is a LocalDateTime of 2017-11-06T11:47:53.
If you absolutely need an old-fashioned Date object for some legacy API, you may do:
    Date oldfashionedDate = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
There is much more about using ThreTenABP in this question: How to use ThreeTenABP in Android Project.
 
    
    - 81,772
- 15
- 137
- 161