Forum Discussion

assemomar's avatar
assemomar
Frequent Visitor
1 year ago
Solved

Calculate working hours between two dates

Calculate working hours between two dates I'm trying to calculate the number of working hours/minutes (start hours start 7 AM , end hour 17 PM) between two dates (ie. excluding non-working hours and...
  • Anonymous's avatar
    Anonymous
    1 year ago

    Hi assemomar 

    Working_Hours =
    VAR StartDateTime = 'Table'[Created]
    VAR EndDateTime = 'Table'[Resolved]
    VAR StartDate = DATE(YEAR(StartDateTime), MONTH(StartDateTime), DAY(StartDateTime))
    VAR EndDate = DATE(YEAR(EndDateTime), MONTH(EndDateTime), DAY(EndDateTime))
    VAR WorkStart = TIME(7, 0, 0)
    VAR WorkEnd = TIME(17, 0, 0)
    VAR TotalWorkHours =
    SUMX(
    FILTER(
    ADDCOLUMNS(
    CALENDAR(StartDate, EndDate),
    "IsWorkday", WEEKDAY([Date], 2) <> 5
    ),
    [IsWorkday] = TRUE
    ),
    VAR CurrentDate = [Date]
    VAR StartHour = IF(CurrentDate = StartDate, MAX(WorkStart, TIME(HOUR(StartDateTime), MINUTE(StartDateTime), 0)), WorkStart)
    VAR EndHour = IF(CurrentDate = EndDate, MIN(WorkEnd, TIME(HOUR(EndDateTime), MINUTE(EndDateTime), 0)), WorkEnd)
    RETURN MAX(0, DATEDIFF(StartHour, EndHour, MINUTE) / 60.0)
    )

    RETURN ROUND(TotalWorkHours, 2)

  • Khushidesai0109's avatar
    1 year ago

    Hiii assemomar 

    WorkingHours =
    VAR StartDateTime = 'Issues'[Created]
    VAR EndDateTime = 'Issues'[Resolved]

    -- Define working hours
    VAR WorkdayStart = TIME(7, 0, 0) -- 07:00 AM
    VAR WorkdayEnd = TIME(17, 0, 0) -- 05:00 PM

    -- Extract date and time components
    VAR StartDate = DATE(YEAR(StartDateTime), MONTH(StartDateTime), DAY(StartDateTime))
    VAR EndDate = DATE(YEAR(EndDateTime), MONTH(EndDateTime), DAY(EndDateTime))

    VAR StartTime = TIME(HOUR(StartDateTime), MINUTE(StartDateTime), SECOND(StartDateTime))
    VAR EndTime = TIME(HOUR(EndDateTime), MINUTE(EndDateTime), SECOND(EndDateTime))

    -- Count working days excluding Fridays (Friday = 5 in DAX)
    VAR WorkingDays =
    COUNTX(
    FILTER(
    ADDCOLUMNS(
    CALENDAR(StartDate, EndDate),
    "Weekday", WEEKDAY([Date], 2) -- 1=Monday, 7=Sunday (Friday=5)
    ),
    [Weekday] <> 5
    ),
    [Date]
    )

    -- Adjust for first day
    VAR FirstDayHours =
    IF(
    WEEKDAY(StartDate, 2) <> 5, -- If not Friday
    DATEDIFF(
    MAX(StartTime, WorkdayStart),
    MIN(WorkdayEnd, EndTime),
    MINUTE
    ) / 60,
    0
    )

    -- Adjust for last day
    VAR LastDayHours =
    IF(
    WEEKDAY(EndDate, 2) <> 5, -- If not Friday
    DATEDIFF(
    WorkdayStart,
    MIN(WorkdayEnd, EndTime),
    MINUTE
    ) / 60,
    0
    )

    -- Adjust for full working days
    VAR FullDayHours = (WorkingDays - 2) * 10 -- Each full working day contributes 10 hours

    -- Compute total working hours
    VAR TotalWorkingHours = FirstDayHours + LastDayHours + FullDayHours

    RETURN TotalWorkingHours



     

    If this helps, I would appreciate your KUDOS!
    Did I answer your question? Mark my post as a solution!