Calculate business hours between two date fields| Zoho Creator

Calculate business hours between two date fields| Zoho Creator

Hey Creators!

It's time to learn something new and simplify your app development journey with Zoho Creator. 

Requirement

Calculate business hours between two chosen date-time inputs.

Sample Use-case

In a Project Tracker application, the team lead selects the start and end dates while assigning tasks to team members, and the business hours are automatically calculated based on the shift hours.

Logic

  1. Create a form (here, Add Task). Add two date-time fields and a number field to populate the business hours.




  2. Configure a form workflow on user input of the End_Date_Time field and copy the code shown below. For ease of understanding, the code is split into four parts, followed by their explanation.

  1. //Declare variables for start and end date-time inputs. 

  2.      startDateTime = input.Start_Date_Time;

  3.      endDateTime = input.End_Date_Time;


  4. //Declare shift details 

  5.     shiftStartTime = "09:30:00 AM";

  6.     shiftEndTime = "06:30:00 PM";

  7.     shiftDurationInHours = 9;


  8. //Defining calendar 

  9.     weekends = {"Saturday", "Sunday"};

  10.     holidays = {};

Here, we declare variables by the names startDateTime and endDateTime for the start and end date-time inputs, respectively. Next, we define the shift timings and shift duration of a day in hours. Then, define all the non-working days. Here, we're only considering weekends, i.e., Saturday and Sunday.

  1.  //Declarations
  2. shiftEndOnStartDate = toDateTime(startDateTime.tostring("dd-MMM-yyyy") + " " + shiftEndTime,"dd-MMM-yyyy hh:mm:ss a");
  3. shiftStartOnEndDate = toDateTime(endDateTime.tostring("dd-MMM-yyyy") + " " + shiftStartTime,"dd-MMM-yyyy hh:mm:ss a");


Next, we
 declare variables for the time when the shift ends on the starting day and when the shift begins on the ending day, respectively.

Here,
shiftEndOnStartDate is created by combining the date part of StartDateTime and the time part of ShiftEndTime to get the shift end time of the starting day. To elaborate,  it takes the start date and converts it into a string (startDateTime.tostring("dd-MMM-yyyy") ) and adds the previously defined shiftEndTime in the dd-MMM-YYY hh:mm:ss format. For instance, let's say the StartDateTime is 17-NOV-2024 at 12:30:00 PM, and the shift ends at 06:30:00 PM; the shiftEndOnStartDate will be 17-NOV-2024 at 06:30:00 PM.

Similarly, we calculate the date-time when the shift starts on the ending day and store it in the variable shiftStartOnEndDate.

Next, to calculate the business hours, we calculate the available hours on the start day with respect to the time chosen. 
  1. //Hours left on the start date
  2. hoursLeftOnStartDate = startDateTime.timeBetween(shiftEndOnStartDate);
  3. hoursLeftOnStartDateString = hoursLeftOnStartDate.toTime();
  4. hoursLeftOnStartDateInSeconds = hoursLeftOnStartDate.getprefix(":").toNumber() * 3600 + hoursLeftOnStartDate.getsuffix(":").getprefix(":").toNumber() * 60;
  5. hoursLeftOnStartDateInHours = hoursLeftOnStartDateInSeconds / 3600;

  6. //Hours left on the end date
  7. hoursLeftOnEndDate = shiftStartOnEndDate.timeBetween(endDateTime);
  8. hoursLeftOnEndDateInSeconds = hoursLeftOnEndDate.getprefix(":").toNumber() * 3600 + hoursLeftOnEndDate.getsuffix(":").getprefix(":").toNumber() * 60;
  9. hoursLeftOnEndDateInHours = hoursLeftOnEndDateInSeconds / 3600;

startDateTime.timeBetween(shiftEndOnStartDate) calculates the difference between the chosen date-time and the shift ending time on the same day.

toTime() returns the hoursLeftOnStartDate value in the date-time format specified in the application settings.

Then, we convert this time into seconds.

(A) hoursLeftOnStartDate.getprefix(":").toNumber() * 3600 takes the hours part, converts it to a number, and multiplies it by 3600 to get the time in seconds.

(B) hoursLeftOnStartDate.getsuffix(":").getprefix(":").toNumber() * 60 takes the minutes part, converts it to a number, and multiplies by 60 to get the time in seconds.

Both (A) and (B) are added to get the business time available on the starting day in seconds.

This value is later converted to hours and stored in the variable hoursLeftOnStartDateInHours.

The same process is repeated to calculate the business hours on the end date.


Next, we need to calculate the number of workdays between startDateTime and endDateTime.
  1. num_work_days = startDateTime.workDaysBetween(endDateTime,weekends,holidays);

  2. //Subtracting 1 to exclude the end date. The start date is excluded by default.
  3. total_business_hours = (num_work_days - 1) * shiftDurationInHours + hoursLeftOnStartDateInHours + hoursLeftOnEndDateInHours;

  4. input.Business_days = total_business_hours.round(1);

num_work_days returns the no.of working days between the starting day StartDateTime and EndDateTime, excluding the weekends and holidays declared earlier.

The workDaysBetween function excludes the start day by default. We also subtract one digit from the number of working days to exclude the end date.

Finally, to calculate the total_business_hours, multiply the number of working days between two given inputs (num_work_days - 1) by the shift hours (shiftDurationInHours) and add the remaining business time on the start date (hoursLeftOnStartDateInHours) and on the end date (hoursLeftOnEndDateInHours).

total_business_hours.round(1) returns the rounded-off value of the total business hours and populates it in the Business_Hours field.

Output




That's all for this post.

Feel free to share your thoughts, queries, and ideas in the comment section below.

Thank you!
 

    • Recent Topics

    • Multiple date selection

      Hello, we want create app for our company. We need create tasks for our employers. For example - 1 employer have task every Friday the whole year. Second have task every Monday for 6 months. For simple way create Multiple date selection in date form
    • Book project costs to tasks

      Hi all, New to zoho but far from new to this sort of platform. I've been scouring the web for a suitable platform for my growing business. I'm currently using Xero and WorkFlow Max but it lacks a key need. I signed up to zoho projects and books to test
    • SalesIQ-Desk integration update: Seamless helpdesk ticket editing in-chat!

      Did you know you can now edit your desk support tickets within SalesIQ? Happy to announce the latest update to the SalesIQ-Desk integration. Managing your customer support tickets within SalesIQ just got even smoother and better. No more toggling between
    • Been getting this error, every now and then "Get count limit exceeded, please try again after 3 mins"

      it is really annoying.
    • Route Optimizer

      Does Zoho Inventory offer route optimization for our in-house deliveries? It will save us time to manually route our daily orders. Thank you
    • Campaign API Error 2001

      I'm getting a 2001 Error stating "Error in subscription. Please try after some time." I've waited but it continues to persist. I"ve copied and pasted the exact request on the API website yet that doesn't work either.
    • How to list Expenses that have not been matched to a Bank Transaction

      In ZoHo books I use expenses to record invoices I receive. I know I should probably uses Bills for this but Bills was not available in the Free edition I initially used. When I upgraded I contunued to use Expenses. I'm trying to find a way of listing
    • How are you handing birthdays?

      I'm deciding on the best way to handle contact birthdays in my set-up. None of the options seem ideal, so I am interested in how others approach this. The aim is to have a usable ui to track birthday without knowing or requiring the year. I'm currently
    • Fiverr is better than Zoho Partners

      For anyone out there looking for help with Zoho Creator's confusing Deluge, I highly recommend hiring NON ZOHO PARTNERS on Fiverr. I've had much better experiences with those who are NOT certified by Zoho. Almost every single "certified" zoho partner
    • Marketing Automation pour maximiser le ROI : évaluer les performances et optimiser les campagnes

      Le Marketing Automation a transformé la manière dont les entreprises mènent leurs actions marketing, offrant une solution efficace pour simplifier les processus, améliorer la productivité et, surtout, maximiser le ROI. Dans un environnement commercial
    • Spotlight series #25 - Create presentation outlines using Zoho Show's Chrome extension

      Hello all, the feature in this month's spotlight is Zoho Show's Chrome extension. The first step to creating a good presentation is outlining your ideas—a crucial process that sets the foundation for everything that follows. But this often involves extensive
    • Will zoho thrive be integrated with Zoho Books?

      title
    • Multi-line fields character limits

      Is there a way to set the character limit higher on multi-line fields so that we are not losing information pasted into the field? When the text is entered or pasted, there is no error to say that the text is too large. After saving and going back to view most of the text is gone.   Also, when viewing the resume, the text is not wrapped in the multi line fields and can t be read without scrolling across the page.
    • Workload Reports

      Under Reports > Workload Reports, would it be possible to get Kanban view sorted by Task Owner? Seems like it'd be an easier/ quicker view of how many tasks are assigned to each user and what status they're at. Also gives you more information about the
    • attributed automatically database section

      Hello everyone and happy holidays... here in zoho CRM, I created 3 bases: - Properties (House, apartment ...) - Transactions (Notaries, ...) - Real estate ads I want when the address is identical on these three bases, that in "Properties" the transactions
    • Custom Module I made shows the records I uploaded are there but they are not showing up.

      Here's a screenshot of the module - It shows there are around 2000 records but it says that there aren't any. The module is viewable by administrators and I am on an administrator account so I am not sure why the records aren't showing. Any help would
    • Webform & spam

      Hi, We set up 2 webform on our website, fowarding the content to Zoho CRM. Since it has been opened up, we are getting lot of spam message (for now about 20 a day). To lower the  amount of false new leads we added the captcha field and new enquieries are send to the Approval Leads list. However we still get some spam. Is there any "anti spam" mechanism built in Zoho CRM, or how is the best way to avoid these kind of spam ? Thanks
    • Need Help with Journey in Zoho Marketing Automation

      Hello everyone, I’m new to Zoho Marketing Automation and am trying to build a journey that triggers based on the contract end date of customers. My goal is to send them an email with an ebook one day before their contract ends. To achieve this, I used
    • Announcing Trident desktop app for Zoho Mail & Zoho Workplace users

      Hello Community, I hope you are doing well and staying safe. As you know, our Mail & workplace teams have been constantly working on adding more value to our offerings to ensure you and your organization continue enjoying your Zoho experience. As part
    • Kudos to the Zoho Flow Team!

      Hi Zoho Flow Team, Way to go on the new design—it looks fantastic! We especially love the festive touch with the Christmas decorations. It's a delightful and thoughtful addition that brings a bit of holiday cheer to the experience. Keep up the amazing
    • Website not found when trying to unlock Zoho vault with fingerprint(authenticator) in windows 11

      Whenever I try to unlock the Zoho vault with fingerprint(authenticator) it shows the Website not found on the server. To replicate the issue follow the below steps: Download the zoho vault extension and login. And now open the zoho vault extension ->
    • Kaizen #170: FAQs on Notification APIs

      Hello all!! Welcome back to another post in the Kaizen series! In this post, we will address the most frequently asked questions about Zoho CRM's Notification APIs from the Zoho CRM Developer Community Forum. Notification API This API allows you to subscribe
    • Extracting data from cells in zoho sheets for zoho books

      I am currently uploading my bank statment in excel format to zoho workdrive. I would like flow to extract certain data and send it to zoho books. Would scripting in zoho flow be able to help me with this? By this I mean should I attempt this in zoho flow
    • Multiple templates (Settings > Email templates)

      Hi Zoho, We would like to have more options to select a template when sending an email in Zohosign. Currently we can only add 1 template per option: Is this possible? Kind regards, Tristan
    • How to find the number that appears most often in a list (the Mode of a list)

      I have a list that contains a list of 5 string values. I want to find which value is repeated most often and place that value into a single line text field Example List1 = Learning,Learning,Shaping,Leading,Learning In List1 the value “Learning” appears
    • Sorting and previewing notes

      I use the method of sorting notes by edit date in both the desktop and android clients, newest notes on top. When I edit a note on Android and exit it to the notebook, it does not move to the very top. Only when I exit the notebook and enter it again,
    • Domain not usable

      We have not used this domain because the Chrome systems on our office devices are not compatible with your technology. I am sorry if no one has never advised you of this. Please cancel if it has not already been canceled. Ticket# 7526594 Please see
    • Bigin iOS, macOS and Android app update - File Cabinet

      Hello Everyone! In the most recent iOS (v1.7.1) and macOS (v1.5.1) updates of the Bigin app, we have included support for the File Cabinet functionality. You can access this feature as a topping within the web app (bigin.zoho.com) and conveniently use
    • Power of Automation :: Automatically close the associated tasks once the Issues are closed

      Hello Everyone, A Custom Function is a user-written set of code to achieve a specific requirement. Set the required conditions needed as to when to trigger using the Workflow rules (be it Tasks / Project) and associate the custom function to it. We have
    • Meeting vs Zoom and why we are moving

      Dear Meeting team,                                   I want to share my thoughts on Meeting vs Zoom and explain why we are moving back to Zoom for all our video conferencing, even though it is part of our Zoho One Subscription. 1). Video & Audio quality - We see a significant downgrade in video quality when using Meeting vs Zoom, even when using the same internet connections.  Meeting video is blurry and not sharp compared to Zoom.  Audio is also hit and miss on Meeting with frequent drop outs and
    • Holidays and celebrations: Unveiling SalesIQ's seasonal theme!

      The holiday season is upon us, and we are feeling all the more merrier at SalesIQ while we unveil this seasonal update. Get ready to sprinkle some holiday magic onto your websites with SalesIQ's new seasonal theme. This new festive theme will provide
    • booking link that expires

      I have a suggestion that is  crucial. When i send booking URL to clients they keep the link and they book appointment whenever they want multiple times. You should give us the Booking URL feature. We should be able to send it and the user can use it only
    • Print record summary to pdf page breaks

      Hello. I created a record summary and would like to export to pdf. Rich text fields or photos can get printed on 2 pages cutting them in half. Is there a way to add page breaks? Thanks.
    • The email address you have entered belongs to a different deployment/region.

      Hi, I am trying to create the user - mprust@crombiecomputers.co.uk but keep getting the message below -  The email address you have entered belongs to a different deployment/region. Please contact support@zohoaccounts.com for assistance. Look forward
    • Pre-fill TO and CC fields for Email Templates

      This would be a game changer to be able to set either specific email addresses or merge fields based on deal role titles into email templates. Please pass this along to *hopefully* add to future features of Zoho CRM.
    • Leads and Deals Issue

      Hi! Is Zoho having trouble today? I've been experiencing issues today. When I move a deal to closed/won, it previously would require a closing date but today the screen just went blur and the closing date did not pop up. And then under leads, I was trying
    • How do I hide all leads from Standard users in my CRM ZOHO

      I want to configure my crm zoho in such a way that standard users will only see leads owned or assigned to them. How do I go about doing this? I have tried all i could, but nothing...can anyone help me?
    • How to Implement Time-Based Filters in Zoho Workflows?

      Hi everyone, I’m looking for a workaround to implement time-based filters in Zoho workflows. Specifically, I need a workflow to trigger only within certain hours (e.g., between 10:00 AM and 8:00 PM, Sunday to Friday). Currently, Zoho workflows execute
    • is there a better way to routinely export my project timesheets?

      Hi there, I am somewhat happy with how Zoho books handles time.  One thing that is missing is more user driven control over my data.  I have a workflow where I constantly need to give customers feeds of work done.  So I pick a project, and would ideally
    • Portal Default View

      Hello! My company is about roll out portals for some users, but we were wondering if it was possible to set the Record Detail Page View to default to a custom view that we made. That way the information they need would be streamlined and easier to see.
    • Next Page