Created
December 7, 2022 20:35
-
-
Save tankorsmash/f52efb7d5d86a562f31296728c963771 to your computer and use it in GitHub Desktop.
Generate midnight and random time during the day
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-| Returns a random time and the midnight time in a TimeZone | |
-} | |
fuzzMidnightAndToday : Time.Zone -> Fuzz.Fuzzer ( Time.Zone, Time.Posix, Time.Posix ) | |
fuzzMidnightAndToday timezone = | |
let | |
currentTimeInDays : Time.Posix -> Duration.Duration | |
currentTimeInDays currentTime = | |
let | |
conversionFunc toTime inTime = | |
toTime timezone currentTime | |
|> (toFloat >> inTime) | |
|> Duration.inDays | |
in | |
List.sum | |
[ conversionFunc Time.toHour Duration.hours | |
, conversionFunc Time.toMinute Duration.minutes | |
, conversionFunc Time.toSecond Duration.seconds | |
, conversionFunc Time.toMillis Duration.milliseconds | |
] | |
|> Duration.days | |
in | |
Fuzz.map | |
(\currentTime -> | |
let | |
midnightDay = | |
let | |
numDays = | |
currentTimeInDays currentTime | |
|> Duration.inDays | |
daysPassedMidnight = | |
numDays | |
|> (\flooredDays -> | |
numDays - (floor flooredDays |> toFloat) | |
) | |
|> Duration.days | |
in | |
Duration.subtractFrom currentTime daysPassedMidnight | |
in | |
( timezone, midnightDay, currentTime ) | |
) | |
fuzzTime |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment