function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Ajitkumar Pradhan 9Ajitkumar Pradhan 9 

How to Set the first two digits of dates to “19” or “20” depending on input of second two digits of year?

If type 15/10/95 it should change to 15/10/1995 where as 1/1/10 it should change to  1/1/2010
Best Answer chosen by Ajitkumar Pradhan 9
SKSANJAYSKSANJAY
Hi Ajit,

Where actually you are looking for this? And another thing is that if suppose user has entered "1/1/10" as a date and he actually meant to set 1910 then what will happen?

Below code will help you analyse the date formatting as per your requirement.

String selectedDate = '15/10/10';
System.debug('selectedDate : ' + selectedDate);
Integer currentYear = system.today().year();
Integer shortCurrentYear = Integer.valueOf((String.valueOf(currentYear)).substring(2));
System.debug('currentYear : ' + currentYear);
System.debug('shortCurrentYear : ' + shortCurrentYear);
String formattedDate = selectedDate.substring(0, selectedDate.lastIndexOf('/'));
Integer selectedYear = Integer.valueOf(selectedDate.substring(selectedDate.lastIndexOf('/') + 1));

if(selectedYear > shortCurrentYear){
    formattedDate += '/19' + selectedYear;
}else{
    formattedDate += '/20' + selectedYear;
}

System.debug('formattedDate : ' + formattedDate);

But remember above code will not work if User has entered year less that current year and he was trying to set 1900 year.

All Answers

SKSANJAYSKSANJAY
Hi Ajit,

Where actually you are looking for this? And another thing is that if suppose user has entered "1/1/10" as a date and he actually meant to set 1910 then what will happen?

Below code will help you analyse the date formatting as per your requirement.

String selectedDate = '15/10/10';
System.debug('selectedDate : ' + selectedDate);
Integer currentYear = system.today().year();
Integer shortCurrentYear = Integer.valueOf((String.valueOf(currentYear)).substring(2));
System.debug('currentYear : ' + currentYear);
System.debug('shortCurrentYear : ' + shortCurrentYear);
String formattedDate = selectedDate.substring(0, selectedDate.lastIndexOf('/'));
Integer selectedYear = Integer.valueOf(selectedDate.substring(selectedDate.lastIndexOf('/') + 1));

if(selectedYear > shortCurrentYear){
    formattedDate += '/19' + selectedYear;
}else{
    formattedDate += '/20' + selectedYear;
}

System.debug('formattedDate : ' + formattedDate);

But remember above code will not work if User has entered year less that current year and he was trying to set 1900 year.
This was selected as the best answer
Ajitkumar Pradhan 9Ajitkumar Pradhan 9
Hi Sanjay,

I appreciate your effort. I wanted a condition where if the year in two digit is greater than 60 then it should take 19 otherwise 20
SKSANJAYSKSANJAY
Perfect, then just change the below code 

if(selectedYear > shortCurrentYear){

to 

if(selectedYear > 60){

your requirement will be done.. Just use anonymous block to execute the code after making changes.

Thanks,
Sanjay
Ajitkumar Pradhan 9Ajitkumar Pradhan 9
Thanks a lot
 
SKSANJAYSKSANJAY
Most Welcome