From 8357a1c0e91edececa842683d906869cb72b4c08 Mon Sep 17 00:00:00 2001 From: Aron Hofer Date: Fri, 15 Sep 2017 14:19:27 -0500 Subject: [PATCH] DateTime() Date() Time() are deprecated. Will be `now` in future release. --- NEWS.md | 4 ++++ stdlib/Dates/src/deprecated.jl | 4 ++++ stdlib/Dates/src/types.jl | 7 +++++++ stdlib/Dates/test/types.jl | 10 ++++++++++ 4 files changed, 25 insertions(+) diff --git a/NEWS.md b/NEWS.md index 78dcc3caaaa0d..5e93b58447b8a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -970,6 +970,10 @@ Deprecated or removed * `Base.@gc_preserve` has been deprecated in favor of `GC.@preserve` ([#25616]). + * `DateTime()`, `Date()`, and `Time()` have been deprecated, instead use `DateTime(1)`, `Date(1)` + and `Time(0)` respectively. In a future release `DateTime()`, `Date()`, and `Time()` will be + alternatives to `now()` ([#23724]). + Command-line option changes --------------------------- diff --git a/stdlib/Dates/src/deprecated.jl b/stdlib/Dates/src/deprecated.jl index 70ff46de8dd38..8916633ecd26f 100644 --- a/stdlib/Dates/src/deprecated.jl +++ b/stdlib/Dates/src/deprecated.jl @@ -41,3 +41,7 @@ import Base.range @deprecate range(start::DateTime, len::Integer) range(start, Day(1), len) false @deprecate range(start::Date, len::Integer) range(start, Day(1), len) false +# PR #23724 +@deprecate DateTime() DateTime(1) +@deprecate Date() Date(1) +@deprecate Time() Time(0) diff --git a/stdlib/Dates/src/types.jl b/stdlib/Dates/src/types.jl index bb856d790baf0..a20eaf58648a8 100644 --- a/stdlib/Dates/src/types.jl +++ b/stdlib/Dates/src/types.jl @@ -314,6 +314,13 @@ DateTime(y, m=1, d=1, h=0, mi=0, s=0, ms=0) = DateTime(Int64(y), Int64(m), Int64 Date(y, m=1, d=1) = Date(Int64(y), Int64(m), Int64(d)) Time(h, mi=0, s=0, ms=0, us=0, ns=0) = Time(Int64(h), Int64(mi), Int64(s), Int64(ms), Int64(us), Int64(ns)) +# Empty constructors default to 'now' +if VERSION >= v"0.8-" + DateTime() = now() + Date() = today() + Time() = Time(now()) +end + # Traits, Equality Base.isfinite(::Union{Type{T}, T}) where {T<:TimeType} = true calendar(dt::DateTime) = ISOCalendar diff --git a/stdlib/Dates/test/types.jl b/stdlib/Dates/test/types.jl index 1f78f92e56643..c4abe8d8d72a5 100644 --- a/stdlib/Dates/test/types.jl +++ b/stdlib/Dates/test/types.jl @@ -110,6 +110,16 @@ end @test Dates.Time(Dates.Hour(4), Dates.Second(10), Dates.Millisecond(15), Dates.Microsecond(20), Dates.Nanosecond(25)) == Dates.Time(4, 0, 10, 15, 20, 25) end + +@testset "empty constructors" begin + if VERSION >= v"0.8-" + present = now() + @test Dates.DateTime(present) <= Dates.DateTime() + @test Dates.Date(present) <= Dates.Date() + @test Dates.Time(present) <= Dates.Time() + end +end + @testset "various input types for Date/DateTime" begin test = Dates.Date(1, 1, 1) @test Dates.Date(Int8(1), Int8(1), Int8(1)) == test