diff --git a/stdlib/Dates/src/arithmetic.jl b/stdlib/Dates/src/arithmetic.jl index be712905188f1..6537f4e1caa82 100644 --- a/stdlib/Dates/src/arithmetic.jl +++ b/stdlib/Dates/src/arithmetic.jl @@ -84,6 +84,12 @@ end (-)(x::Time, y::TimePeriod) = return Time(Nanosecond(value(x) - tons(y))) (+)(y::Period, x::TimeType) = x + y +# Missing support +(+)(x::AbstractTime, y::Missing) = missing +(+)(x::Missing, y::AbstractTime) = missing +(-)(x::AbstractTime, y::Missing) = missing +(-)(x::Missing, y::AbstractTime) = missing + # AbstractArray{TimeType}, AbstractArray{TimeType} (-)(x::OrdinalRange{T}, y::OrdinalRange{T}) where {T<:TimeType} = Vector(x) - Vector(y) (-)(x::AbstractRange{T}, y::AbstractRange{T}) where {T<:TimeType} = Vector(x) - Vector(y) diff --git a/stdlib/Dates/test/arithmetic.jl b/stdlib/Dates/test/arithmetic.jl index fe49b1127f9bf..a1a6884d4b0c3 100644 --- a/stdlib/Dates/test/arithmetic.jl +++ b/stdlib/Dates/test/arithmetic.jl @@ -499,4 +499,13 @@ end end end +@testset "Missing arithmetic" begin + for t ∈ [Date, Time, Day, Month, Week, Year, Hour, Microsecond, Millisecond, Minute, Nanosecond, Second] + @test ismissing(t(1) + missing) + @test ismissing(missing + t(1)) + @test ismissing(t(1) - missing) + @test ismissing(missing - t(1)) + end +end + end