# Difference between two dates in Julia

**URL:** https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048
**Category:** Performance
**Tags:** dates, datetime
**Created:** [August 21, 2023, 9:37pm UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048 "2023-08-21T21:37:46Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![Sandy45](https://avatars.discourse-cdn.com/v4/letter/s/3ec8ea/32.png) [@Sandy45](https://discourse.julialang.org/u/Sandy45)
#### Post date: [August 21, 2023, 9:37pm UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048/1 "2023-08-21T21:37:46Z")

</div>

I am trying to get difference between two dates in number of “days”.

I am able to substract the two date fields but results is being produced as “n days”.

As we can see below DATE\_DIFF is produced after executing below logic. I would like to produce DATE\_DIFF as Integer like 0, 510, 1223 etc.

df2.DATE\_DIFF = (df2.dte2 - minimum(df2.dte2))

```julia

3×4 DataFrame
 Row │ dte dte2 year DATE_DIFF 
     │ Date Date Int64 Day       
─────┼──────────────────────────────────────────
   1 │ 2022-01-01 2022-01-01 2022 0 days
   2 │ 2023-05-26 2023-05-26 2023 510 days
   3 │ 2025-05-08 2025-05-08 2025 1223 days

```

---

<div class="post-metadata">

### Author: ![jar1](https://avatars.discourse-cdn.com/v4/letter/j/c0e974/32.png) [@jar1](https://discourse.julialang.org/u/jar1)
#### Post date: [August 21, 2023, 9:40pm UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048/2 "2023-08-21T21:40:01Z")

</div>

Divide by `Day(1)`.

You can also use `Dates.value` but I think that’s worse because if your input units change and you forget to update you’ll get the wrong result.

For extreme values of days, dividing might lose some precision in the conversion to float.

```julia
julia> BigInt(Day(typemax(Int))/Day(1)) - BigInt(typemax(Int))
1

```

In that case maybe it’s better to use `value(d)`. A best-of-both-worlds solution would be

> <https://github.com/JuliaLang/julia/issues/48782>
>
> Given \`Year(3)\` I want to get a number of years, \`3\`. The way to do this is \`Dat…es.value(x)\`. Ideally I would never need these functions because Makie, KernelFunctions, and other packages could handle dates just like numbers, but today they can't.
> 
> The problem is that \`value(x)\` is unit-unsafe. If the period changes to \`Minute(1577846)\`, but I'm still expecting the return value to be a number of years, then \`value(x)\` gives the wrong number of years. 
> 
> I propose \`years(x)\`, \`days\`, etc. That way the result is unit safe.

---

<div class="post-metadata">

### Author: ![Sandy45](https://avatars.discourse-cdn.com/v4/letter/s/3ec8ea/32.png) [@Sandy45](https://discourse.julialang.org/u/Sandy45)
#### Post date: [August 21, 2023, 10:14pm UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048/3 "2023-08-21T22:14:21Z")

</div>

@jar1 Thank You!! It returned float and I have converted it to Int.

---

<div class="post-metadata">

### Author: ![Sandy45](https://avatars.discourse-cdn.com/v4/letter/s/3ec8ea/32.png) [@Sandy45](https://discourse.julialang.org/u/Sandy45)
#### Post date: [August 22, 2023, 1:27am UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048/4 "2023-08-22T01:27:10Z")

</div>

> [@jar1](#):
>
> d

@jar1 Do you know if we have any method in julia to convert hh:mm to minutes. ex. 13:06 into minutes?

---

<div class="post-metadata">

### Author: ![jar1](https://avatars.discourse-cdn.com/v4/letter/j/c0e974/32.png) [@jar1](https://discourse.julialang.org/u/jar1)
#### Post date: [August 22, 2023, 2:10am UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048/5 "2023-08-22T02:10:32Z")

</div>

What result do you want from 13:06?

---

<div class="post-metadata">

### Author: ![Sandy45](https://avatars.discourse-cdn.com/v4/letter/s/3ec8ea/32.png) [@Sandy45](https://discourse.julialang.org/u/Sandy45)
#### Post date: [August 22, 2023, 2:21am UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048/6 "2023-08-22T02:21:09Z")

</div>

60 \* 13 = 780 + 06 = 786 minutes, I know we can calculate 60 \* 13 by parsing or splitting by “:” but just wanted to check if there is method that already does this.

---

<div class="post-metadata">

### Author: ![dnb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnb/32/47121_2.png) [@dnb](https://discourse.julialang.org/u/dnb)
#### Post date: [August 22, 2023, 2:23am UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048/7 "2023-08-22T02:23:53Z")

</div>

One way is:

```julia
hour(Time("13:06")) * 60 + minute(Time("13:06"))

```

Not sure if there is a more elegant function

---

<div class="post-metadata">

### Author: ![Sandy45](https://avatars.discourse-cdn.com/v4/letter/s/3ec8ea/32.png) [@Sandy45](https://discourse.julialang.org/u/Sandy45)
#### Post date: [August 22, 2023, 2:31am UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048/8 "2023-08-22T02:31:14Z")

</div>

> [@dnb](#):
>
> `hour(Time("13:06")) * 60 + minute(Time("13:06"))`

@dnb Yeah, that also works - Thanks!

---

<div class="post-metadata">

### Author: ![digital\_carver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digital_carver/32/33818_2.png) [@digital\_carver](https://discourse.julialang.org/u/digital_carver)
#### Post date: [August 28, 2023, 11:12pm UTC](https://discourse.julialang.org/t/difference-between-two-dates-in-julia/103048/9 "2023-08-28T23:12:47Z")

</div>

> [@Sandy45](#):
>
> 60 \* 13 = 780 + 06 = 786 minutes, I know we can calculate 60 \* 13 by parsing or splitting by “:” but just wanted to check if there is method that already does this.

```julia
julia> convert(Minute, Dates.CompoundPeriod(Time("13:06")))
786 minutes

```
