# Duration Calculation

**URL:** <https://forum.inductiveautomation.com/t/duration-calculation/45791>\
**Category:** Ignition\
**Created:** [April 20, 2021, 5:47am UTC](https://forum.inductiveautomation.com/t/duration-calculation/45791 "2021-04-20T05:47:48Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Adriaan.leRoux](https://avatars.discourse-cdn.com/v4/letter/a/bbce88/32.png) [@Adriaan.leRoux](https://forum.inductiveautomation.com/u/Adriaan.leRoux)\
**Post date:** [April 20, 2021, 5:47am UTC](https://forum.inductiveautomation.com/t/duration-calculation/45791/1 "2021-04-20T05:47:48Z")

</div>

I have a simple parameter on a report called duration, and is calculated as follows:

```auto
fromMillis({EndDate}-{StartDate})

```

I get the correct time difference + 2 hours, it’s always exactly two hours more than what it should be. Why would this happen? The only thing I can think of is that my timezone is GMT+2, but that doesn’t make sense either

Any help? I don’t want to just subtract 2 hours to make it work.

I’ve also tried various date formatting options, all the same result

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [April 20, 2021, 9:55am UTC](https://forum.inductiveautomation.com/t/duration-calculation/45791/2 "2021-04-20T09:55:28Z")

</div>

Sounds like one of the parameters is incorrect. Try showing both in the report and see which one you need to take a closer look at.

---

<div class="post-metadata">

**Author:** ![Adriaan.leRoux](https://avatars.discourse-cdn.com/v4/letter/a/bbce88/32.png) [@Adriaan.leRoux](https://forum.inductiveautomation.com/u/Adriaan.leRoux)\
**Post date:** [April 20, 2021, 10:16am UTC](https://forum.inductiveautomation.com/t/duration-calculation/45791/3 "2021-04-20T10:16:15Z")

</div>

I actually did that, the timestamps are fine, I wonder if it's not maybe the fromMillis() instruction not factoring in the timezone, or something like that, the documentation states:

> Creates a date object given a time, in milliseconds, past Unix epoch (1 January 1970 at midnight UTC).

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [April 20, 2021, 11:20am UTC](https://forum.inductiveautomation.com/t/duration-calculation/45791/4 "2021-04-20T11:20:38Z")

</div>

It is factoring in time zone when you use fromMillis. I’d suggest scripting the duration.

Untested, but should get you close.

```auto
def hms(millisIn):
	seconds, ms = divmod(millisIn, 1000)
	minutes, seconds = divmod(seconds, 60)
	hours, minutes = divmod(minutes, 60)
	if hours > 24:
		days,hours = divmod(hours, 24)
		return '{}:{:02d}:{:02d}:{:02d}'.format(days,hours,minutes,seconds)
	else:
		return '{}:{:02d}:{:02d}'.format(hours,minutes,seconds)

startDate = data['StartDate']
endDate = data['EndDate']

duration = endDate.getTime() - startDate.getTime()

data['duration'] = hms(duration)
```

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 20, 2021, 11:42am UTC](https://forum.inductiveautomation.com/t/duration-calculation/45791/5 "2021-04-20T11:42:29Z")

</div>

Use fromMillis() on each timestamp separately, and subtract them.

Like so:

```auto
fromMillis({EndDate})-fromMillis({StartDate})

```

fromMillis only works on dates/timestamps, not intervals.

---

<div class="post-metadata">

**Author:** ![Adriaan.leRoux](https://avatars.discourse-cdn.com/v4/letter/a/bbce88/32.png) [@Adriaan.leRoux](https://forum.inductiveautomation.com/u/Adriaan.leRoux)\
**Post date:** [April 20, 2021, 1:03pm UTC](https://forum.inductiveautomation.com/t/duration-calculation/45791/6 "2021-04-20T13:03:37Z")

</div>

I appreciate the help, I will give it a go first thing tomorrow morning

---

<div class="post-metadata">

**Author:** ![Adriaan.leRoux](https://avatars.discourse-cdn.com/v4/letter/a/bbce88/32.png) [@Adriaan.leRoux](https://forum.inductiveautomation.com/u/Adriaan.leRoux)\
**Post date:** [April 26, 2021, 6:57am UTC](https://forum.inductiveautomation.com/t/duration-calculation/45791/7 "2021-04-26T06:57:41Z")

</div>

I ended up going with this expression to get the time accurate and displayed correctly

> dateFormat(fromMillis({EndDate}) - fromMillis({StartDate}) - fromMillis(getTimezoneRawOffset()\*3600000),"HH:mm:ss")
