Elixir datetime is such a mess. Even python is better and that's saying a lot.
On Mon, Sep 7, 2020 at 6:12 AM [email protected] <[email protected]> wrote: > Hello! > > I'm dealing with ISO8601 strings for date times, and the current libraries > make my use case, which is dealing with clock time but preserving the > offset from UTC, very frustrating. > > Specifically (unless I'm mistaken) there is no inbuilt functions that > allow reversible parsing of them. > > e.g. > > Given "2020-09-7T10:59:00+0100" I can parse this into a UTC DateTime and > an offset, or a NaiveDateTime ignoring the offset, but from either of these > I cannot reproduce "2020-09-7T10:59:00+0100". > > I understand that an offset is not a timezone, so I understand why by > default it does get converted to UTC, but it does represent the clock time > at a point in time (which is useful for historical time series data like > I'm working with). > > What I propose is two options: > > 1) Have either/both DateTime and/or NaiveDateTime's `to_iso8601/2` > expanded to take an offset back for the point of formatting, e.g. > > ``` > {:ok, utc_dt, offset} = DateTime.from_iso8601("2020-09-7T10:59:00+0100") > "2020-09-7T10:59:00+01:00" = DateTime.to_iso8601(utc_dt, :extended, offset) > ``` > > 2) Have NaiveDateTime capture offset into it's struct, and allow it to be > included when formatting date times. > > ``` > {:ok, naive_dt} = NaiveDateTime.from_iso8601("2020-09-7T10:59:00+0100") > "2020-09-7T10:59:00+01:00" = NaiveDateTime.to_iso8601(naive_dt, > :extended_offset) > ``` > > I'd be happy to work on either / both of these, but currently I have to > use DateTime.add and manually edit the struct to get the result I want, and > given that the inbuilt libraries are more than sufficient for all my other > purposes the current iso8601 handling feels like it could be improved > > Cheers and look forward to feedback > Jon > > -- > 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/04e5e287-7a5b-45f1-a56c-54137bd14a23n%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/04e5e287-7a5b-45f1-a56c-54137bd14a23n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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/CAHsqzVEpdVGbvV49vVZt7bhoNvjT-%2BK%3DNnMQ%2BowmJt_A%3DqL0Uw%40mail.gmail.com.
