```
julia> Dates.days(Hour(1))
0
julia> Dates.days(Year(1))
365.2425
```

One of these truncates and one does not. What is the rationale behind this distinction?

```
julia> Dates.days(Hour(1))
0
julia> Dates.days(Year(1))
365.2425
```

One of these truncates and one does not. What is the rationale behind this distinction?

1 Like

```
julia> Dates.days(Minute(1))
0
julia> Dates.days(Month(1))
30.436875
```

Hour < Day, Year > Day

Right. Why is that distinction useful? It seems more natural to me that Iâ€™d want to round down in both cases or neither.

â€śhow many days are there in a minute?â€ť â€ś0â€ť

itâ€™s not doing this:

```
julia> convert(Day, Minute(1))
ERROR: InexactError: divexact(Int64, 0.0006944444444444445)
julia> convert(Minute, Day(1))
1440 minutes
```

which gives you error explicitly if doesnâ€™t convert

Why round down in the >0 case but not the >1 case?

Or, why return a fractional answer in the >1 case but not the >0 case?

Indeed, this seems inconsistent and it could also provide a fraction of days for units smaller than a period of one day but in the source code it is currently defined as:

```
days(c::Millisecond) = div(value(c),86400000)
days(c::Second) = div(value(c),86400)
days(c::Minute) = div(value(c),1440)
days(c::Hour) = div(value(c),24)
```

With the current logic, the following is false (*distributive property breaks*):

```
days(Minute(12*60)) + days(Minute(12*60)) == days(Minute(24*60))
```

donâ€™t really see why asking:

how many Days are there in ___

should be distributive in the first place, not all functions that give you numbers should be anyway

```
julia> floor(0.8) + floor(0.8) == floor(1.6)
false
```

I think either way would be fine by me, the current behavior is not bad IMO.