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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.