Hi All,
This post explains how to calculate time spent and no of days between two date time value and issue faced while doing same and how to resolve those.
First Try
Account acc = [select id,createddate,lastmodifieddate from Account limit 1];
datetime diff = acc.lastmodifieddate - acc.createddate;
System.debug('diff --'+diff );
Error - COMPILE ERROR: Date/time expressions must use Integer or Double or DecimalLINE: 3 COLUMN: 14
Second Try
Account acc = [select id,createddate,lastmodifieddate from Account limit 1];
Integer diff = Integer.valueOf(acc.lastmodifieddate) - Integer.valueOf(acc.createddate);
System.debug('diff --'+diff );
Error
EXCEPTION: System.TypeException: Invalid integer: java.util.GregorianCalendar[time=1455789326000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2016,MONTH=1,WEEK_OF_YEAR=7,WEEK_OF_MONTH=3,DAY_OF_MONTH=18,DAY_OF_YEAR=49,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=55,SECOND=26,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0]STACKTRACE: AnonymousBlock: line 3, column 1LINE: 3 COLUMN: 1
Final Try and It works.
Account acc = [select id,createddate,lastmodifieddate from Account limit 1];
long seconds = acc.lastmodifieddate.getTime() - acc.createddate.getTime();
System.debug('seconds --'+seconds);
long millseconds = seconds/1000;
System.debug('millseconds --'+millseconds );
Integer min = Integer.valueof(millseconds/60);
System.debug('min --'+min );
Integer hour = min/60;
System.debug('hour --'+hour);
Integer day = hour/24;
System.debug('day --'+day );
The key note here is use of getTime() method.
We can also use Day() to get the difference.
Account acc = [select id,createddate,lastmodifieddate from Account where name = 'yyy' limit 1];
System.debug('createddate --'+acc.createddate);
System.debug('lastmodifieddate --'+acc.lastmodifieddate);
long daysDifference = acc.lastmodifieddate.day() - acc.createddate.day();
System.debug('seconds --'+seconds);
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_methods_system_datetime.htm
2 comments:
Life Saver. Thanks
YOU ARE THE BEST! :)
Post a Comment