1

I have a string like this :

10/12/1990

that is supposed to be a date.

I need to convert it into a date like that :

1990-12-10

How can I do that ? I tried a lot of things like converting it into a datetime and trying to format it like 'yyyy-MM-dd' but I always got this error when I run the code :

System.TypeException: Invalid date/time: 10/12/1990

1
  • 1
    Have you tried using Date.parse(), if you're in a locale that uses the MM/DD/YYYY date format?
    – David Reed
    Jun 12, 2018 at 15:30

2 Answers 2

4

Why not do it yourself using String split?

    String myDate ='10/12/1990';
List<String> arrayDate = myDate.split('/');
String newDateFormat = arrayDate[2]+'-'+arrayDate[1]+'-'+arrayDate[0];

System.debug(newDateFormat);
1
  • Thanks, that was finally the easier way to resolve that !
    – dou
    Jun 13, 2018 at 7:36
2

If you're located in an org that uses the MM/DD/YYYY date format, the Date.parse() method will do the hard work for you to convert your string into a Date instance. Then, you can use DateTime.format() to render the output format you desire. (Oddly, DateTime has more functionality than Date for this purpose).

Date myDate = Date.parse('10/12/1990');
System.debug(
    DateTime.newInstance(myDate, Time.newInstance(0, 0, 0, 0)).format('YYYY-MM-dd')
);
2
  • It's a per-user setting, actually.
    – sfdcfox
    Jun 12, 2018 at 20:16
  • Doh. That makes this approach fragile. I wish there existed a Date.parseFormat().
    – David Reed
    Jun 12, 2018 at 20:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .