# Help with ISO8601 duration string conversion

**URL:** <https://forum.inductiveautomation.com/t/help-with-iso8601-duration-string-conversion/68044>\
**Category:** Ignition\
**Created:** [December 28, 2022, 9:01pm UTC](https://forum.inductiveautomation.com/t/help-with-iso8601-duration-string-conversion/68044 "2022-12-28T21:01:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Elisha\_Blevins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/elisha_blevins/32/42180_2.png) [@Elisha\_Blevins](https://forum.inductiveautomation.com/u/Elisha_Blevins)\
**Post date:** [December 28, 2022, 9:01pm UTC](https://forum.inductiveautomation.com/t/help-with-iso8601-duration-string-conversion/68044/1 "2022-12-28T21:01:21Z")

</div>

I am trying to convert a series of string tags displaying durations in the ISO8601 format to DateTime tags or Integer tags. I considered using an expression tag, but our expression was unsuccessful (see example below). This expression returns "null Days, null Hours and null Minutes." I am less concerned with the actual date, I am only needing the days, hours, and minutes. Does anyone have any advice or possible solutions?

```auto
concat(
    (substring({[~]AStringTag.value},1,(indexOf({[~]AStringTag.value},"D"))))
    , " Days, "
    , (substring({[~]AStringTag.value},(indexOf({[~]AStringTag.value},"T")+1)
        ,(indexOf({[~]AStringTag.value},"H"))))
    , " Hours and "
    , (substring({[~]AStringTag.value},(indexOf({[~]AStringTag.value},"H")+1)
        ,(indexOf({[~]AStringTag.value},"M"))))
    , " Minutes"
    )

```

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [December 28, 2022, 9:54pm UTC](https://forum.inductiveautomation.com/t/help-with-iso8601-duration-string-conversion/68044/2 "2022-12-28T21:54:23Z")

</div>

Give us a sample of the string you are feeding into the expression, if you can, please.

---

<div class="post-metadata">

**Author:** ![Elisha\_Blevins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/elisha_blevins/32/42180_2.png) [@Elisha\_Blevins](https://forum.inductiveautomation.com/u/Elisha_Blevins)\
**Post date:** [December 29, 2022, 2:19pm UTC](https://forum.inductiveautomation.com/t/help-with-iso8601-duration-string-conversion/68044/3 "2022-12-29T14:19:43Z")

</div>

My string value looks like "P6DT2H14M"

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [December 29, 2022, 2:47pm UTC](https://forum.inductiveautomation.com/t/help-with-iso8601-duration-string-conversion/68044/4 "2022-12-29T14:47:11Z")

</div>

It works for me if I create the tag and use the `[default]` tag path (which is where my tag is located).

```auto
concat(
    (substring({[default]AStringTag.value},1,(indexOf({[default]AStringTag.value},"D"))))
    , " Days, "
    , (substring({[default]AStringTag.value},(indexOf({[default]AStringTag.value},"T")+1)
        ,(indexOf({[default]AStringTag.value},"H"))))
    , " Hours and "
    , (substring({[default]AStringTag.value},(indexOf({[default]AStringTag.value},"H")+1)
        ,(indexOf({[default]AStringTag.value},"M"))))
    , " Minutes"
)

```

Input: `P6DT2H14M`  
Output: `6 Days, 2 Hours and 14 Minutes`.

---

<div class="post-metadata">

**Author:** ![Elisha\_Blevins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/elisha_blevins/32/42180_2.png) [@Elisha\_Blevins](https://forum.inductiveautomation.com/u/Elisha_Blevins)\
**Post date:** [December 29, 2022, 7:30pm UTC](https://forum.inductiveautomation.com/t/help-with-iso8601-duration-string-conversion/68044/5 "2022-12-29T19:30:33Z")

</div>

I got it working! Thanks!
