Elm:
Tulevaisuuden tai menneisyyden päivämäärän laskeminen
Kuinka:
Elmin Time
-moduuli ja justinmimbs/time-extra
-paketti mahdollistavat päivämäärien käsittelyn helposti.
import Time exposing (Posix)
import Time.Extra as TimeExtra
--calculateDate : Int -> Posix -> Posix
-- @deltaDays: lisättävien (negatiivinen vähentää) päivien määrä
-- @fromDate: lähtöpäivämäärä Posix-muodossa
calculateDate deltaDays fromDate =
TimeExtra.add TimeExtra.days deltaDays fromDate
-- Käyttö
-- Älä unohda, että Elm laskee ajan millisekunteina Unix-epookista lähtien.
sampleDate = Time.millisToPosix 1580515200000 -- 1. helmikuuta 2020 00:00:00 UTC
futureDate = calculateDate 10 sampleDate -- Lisää 10 päivää
pastDate = calculateDate -15 sampleDate -- Vähentää 15 päivää
-- esimerkkitulosteet:
-- futureDate -> 1581552000000 -- 12. helmikuuta 2020 00:00:00 UTC
-- pastDate -> 1580006400000 -- 17. tammikuuta 2020 00:00:00 UTC
Syväsukellus
Aikaisemmin päivämäärien käsittely ohjelmoinnissa oli tuskaista. Eri järjestelmät, formaatit ja aikavyöhykkeet tuottivat kaikille päänsärkyä. Elmin Time
-moduuli, joka perustuu Unixin aikajärjestelmään (millisekunteina vuodesta 1970), standardoi tämän. Paketti justinmimbs/time-extra
yksinkertaistaa edelleen päivämäärien käsittelytoimenpiteitä, kuten päivien lisäämistä tai vähentämistä.
Vaihtoehtoja? Muilla kielillä on omat kirjastonsa, kuten Pythonin datetime
tai JavaScriptin Date
. Mutta Elmin lähestymistapa tarjoaa vahvan tyypityksen ja puhtauden, mikä vähentää bugeja.
Päivien lisäämisen tai vähentämisen lisäksi voit myös työskennellä kuukausien, vuosien tai jopa tuntien ja minuuttien kanssa. Elm:ssä ja paketeissa, kuten time-extra
, olevat funktiot keskittyvät muuttumattomuuteen ja puhtaisiin funktioihin—tämä tarkoittaa, että sivuvaikutuksia ei ole. Kun lasket uuden päivämäärän, alkuperäinen pysyy muuttumattomana.
Katso myös
- Elm
Time
moduuli: https://package.elm-lang.org/packages/elm/time/latest/ justinmimbs/time-extra
-paketti: https://package.elm-lang.org/packages/justinmimbs/time-extra/latest/- Elm-oppaassa aika: https://guide.elm-lang.org/effects/time.html