Category: Sample codes

  • Salesforce: Adding specific business days to a date using BusinessHours class

    Businesshours is a system class provided by Salesforce for performing various operations on the DateTime values. It provides methods for checking if a date falls during business hours, whats the diff between two dates in business.

    The in-built method does allow adding the specific days to the DateTime value but there is a catch, it needs to be in the Long format. More information could be found here.

    add(businessHoursId, startDate, intervalMilliseconds)

    What exactly this method does?

    The method has been specifically designed to add the number of hours in the millisecond format. And addition is done with respect to business hours. Let’s consider you want to add 1 day to the Date December 18th, 10 AM. And business hours are set for 8 AM to 8 PM for all days.

    Long interval = 24 * 60 * 60 * 1000;
                     h   m    s    ms
    Datetime dt = DateTime.newInstance(2017, 12, 18, 10,0,0);
    System.debug('Date :' + dt.format());
    Long interval = (24 * 60 * 60 * 1000);
    Datetime newdt = BusinessHours.add(bh.Id, dt, interval);
    System.debug('After adding 1 day :' + newdt.format());
    
    //OUTPUT
    22:12:52:003 USER_DEBUG [3]|DEBUG|Date :12/18/2017 10:00 AM
    22:12:52:004 USER_DEBUG [6]|DEBUG|After adding 1 day :12/20/2017 10:00 AM
    

    This calculation added complete 2 days as business hours are set 12 hours a day.

    Alternative for avoiding such hour based calculation could be going in an iterative way.

    public static Datetime addBusinessDays(Datetime startDate, Integer numberOfDays, id busniesshourId)
    {
    	Integer count = 0;
    	while (count < days) {
    		startDate = startDate.addDays(1);
    		if (BusinessHours.isWithin(businesshourId, startDate))
    			count++;
    	}
    	return startDate;
    }

    This will also ensure that the initial time is preserved.

  • Salesforce: Adding specific working days to a Date

    UPDATE: If you want to consider holidays and business hours you can check out this article.

    Many time while coding we come across the requirement in which we need to calculate the EndDate from a StartDate after a specific number of business/working days. That means excluding the weekends (Saturday & Sunday) Following is the code snippet which does this. I know there can be an optimized way of doing this. But I didn’t want to spend more time on this.

    Below method takes date and number of working days to be added to the date.

    https://gist.github.com/prasannadeshpande/b56d3d78fb461fa7b27e5462e7543ac4

    Method daysOff calculates the number of non-working days coming in the start date and end date. And after which we are again adding those number of days.

  • Showing the Processing/Loading image

    I came across a good code sample while surfing for showing the Loading/Processing  image on the VisualForce Page.

    You can find it at: http://force.siddheshkabe.co.in/2009/10/displaying-please-wait-ajax-animation.html