I think that'd be a nice addition. Even if it does not eventually land in
Elixir, anyone can define the `~Z` (or whatever) sigil just for tests as
shown at the end of the post.
I usually deal with just `NaiveDateTime`s but on the rare occasion that I
used `DateTime` not having the sigil wasn't as bad as the incredibly
verbose inspect output of DateTime's (the whole struct). Thus, if there was
an unambiguous text representation (that contains timezone) which could be
used in both the sigil and inspect, I think that would be a great addition
to the language. While inspect could handle any struct (assuming it was
correctly constructed, leaving this to the developer), sigil probably would
only work for Etc/UTC, until Elixir ships with tzdata.
defmodule FooCase do
use ExUnit.CaseTemplate
using do
quote do
def sigil_Z(binary, _opts) do
{:ok, datetime, 0} = DateTime.from_iso8601(binary)
datetime
end
end
end
end
defmodule FooTest do
use FooCase
test "the truth" do
assert ~Z[2015-01-23T23:50:07Z] == DateTime.from_naive!(~N[2015-01-23T23
:50:07], "Etc/UTC")
end
end
W dniu wtorek, 27 czerwca 2017 04:05:49 UTC+2 użytkownik Gregory McIntyre
napisał:
>
> Love Elixir! So good!
>
> Recently we found ourselves writing a lot of DateTime literals to feed
> into our unit tests like this:
>
> DateTime.from_naive!(~N[2016-05-05 01:01:42], "Etc/UTC")
>
> Is there a simpler way to specify human readable timestamp literals in
> code? Could there be? I'm not sure what the best sigil would be, but
> something like this?
>
> ~Z[2016-05-05T01:01:42Z]
>
> (That is ISO 8601 format.)
>
> Love and peace and many thanks,
> Greg
>
>
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-core/d59e56aa-dde9-426b-9303-a62f2576e396%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.