Skip to content

Commit da96506

Browse files
committed
Add UnixTime parsing from string
1 parent 66811e2 commit da96506

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

src/UnixTimes.jl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,19 @@ UnixTime(x::Date) = UnixTime(DateTime(x))
6363
UnixTime(x::Date, y::Time) =
6464
UnixTime(year(x), month(x), day(x), hour(y), minute(y), second(y), millisecond(y), microsecond(y), nanosecond(y))
6565

66+
const DATEFORMAT = dateformat"yyyy-mm-ddTHH:MM:SS.sss"
67+
68+
function UnixTime(s::AbstractString)
69+
dt = DateTime(chop(s; tail=6), DATEFORMAT)
70+
ns = Nanosecond(parse(Int, last(s, 6)))
71+
UnixTime(dt) + ns
72+
end
73+
6674
Base.convert(::Type{UnixTime}, x::DateTime) = UnixTime(x)
6775

6876
function Base.show(io::IO, x::UnixTime)
6977
xdt = convert(DateTime, x)
70-
print(io, Dates.format(xdt, dateformat"yyyy-mm-ddTHH:MM:SS.sss"))
78+
print(io, Dates.format(xdt, DATEFORMAT))
7179
v = x.instant.periods.value
7280
d = 100_000
7381
for i in 1:6

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ end
4747
@testset "io" begin
4848
x = UnixTime(2020, 1, 2, 3, 4, 5, 6, 7, 8)
4949
@test string(x) == "2020-01-02T03:04:05.006007008"
50+
@test UnixTime(string(x)) == x
5051
end
5152

5253
@testset "arithmetic" begin

0 commit comments

Comments
 (0)