Используйте Time.now, чтобы получить зонированную дату в вязе 0.18 - PullRequest
0 голосов
/ 13 марта 2020
posixDateTask : Task.Task x Time.Date.Date
posixDateTask = 
    let
        timeZoneDate now =
            Time.Date.date
                (Time.ZonedDateTime.year (Time.ZonedDateTime.fromDateTime (TimeZones.canada_pacific ()) now))
                (Time.ZonedDateTime.month (Time.ZonedDateTime.fromDateTime (TimeZones.canada_pacific ()) now))
                (Time.ZonedDateTime.day (Time.ZonedDateTime.fromDateTime (TimeZones.canada_pacific ()) now))
    in
    Time.now
        |> Task.map timeZoneDate

Это дает мне ошибку:

    |> Task.map timeZoneDate

(|>) is expecting the right side to be a:

     Task.Task x Time.Time -> a

But the right side is:

    Task.Task x Time.DateTime.DateTime -> Task.Task x Time.Date.Date

Как мне изменить, чтобы вернуть тип Task.Task x Time.Date.Date. Я не знаю, откуда взялись Time.DateTime.DateTime.

1 Ответ

1 голос
/ 13 марта 2020

Time.now возвращает задачу с Time.Time, который вы передаете timeZoneDate как now. Затем вы передаете now в Time.ZonedDateTime.fromDateTime, что предполагает Time.DateTime.DateTime (что не должно вызывать удивления, учитывая его имя). Поэтому вам нужно конвертировать now из Time.Time в Time.DateTime.DateTime. Кажется, вы можете сделать это, используя Time.DateTime.fromTimestamp.

Исходя из этого, что-то вроде залога этого должно работать:

posixDateTask : Task.Task x Time.Date.Date
posixDateTask = 
    let
        timeZoneDate now =
            let
                dateTime =
                    Time.DateTime.fromTimeStamp now

                timeZone =
                    TimeZones.canada_pacific ()

                zonedDateTime =
                    Time.ZonedDateTime.fromDateTime timeZone dateTime
            in
            Time.Date.date
                (Time.ZonedDateTime.year zonedDateTime)
                (Time.ZonedDateTime.month zonedDateTime)
                (Time.ZonedDateTime.day zonedDateTime)
    in
    Time.now
        |> Task.map timeZoneDate
...