Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix negative timestamps parsing incorrectly #32

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jamesrweb
Copy link
Contributor

Closes #31

Currently the utcOffsetMinutesFromParts helper calculates the offset incorrectly by a slim margin, but enough to be concerning, when provided with negative timestamps such as those in the tests provided as part of this PR.

To validate the changes you can paste the test case ISO-8601 strings into a converter like Dencode to see the stamps are correctly conforming as intended.

This is actually quite a surprising issue so kudos to @pd9333 for catching this one! 🎉

@@ -15,6 +15,6 @@
"elm/time": "1.0.0 <= v < 2.0.0"
},
"test-dependencies": {
"elm-explorations/test": "1.0.0 <= v < 2.0.0"
"elm-explorations/test": "2.0.0 <= v < 3.0.0"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Required change for the elm-test command to run.

@@ -342,7 +342,7 @@ utcOffsetInMinutes =
utcOffsetMinutesFromParts : Int -> Int -> Int -> Int
utcOffsetMinutesFromParts multiplier hours minutes =
-- multiplier is either 1 or -1 (for negative UTC offsets)
multiplier * (hours * 60) + minutes
multiplier * ((hours * 60) + minutes)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The actual fix to correct the implementation.

@@ -3,9 +3,9 @@ module Example exposing (knownValues, reflexive)
import Expect
import Fuzz
import Iso8601
import Json.Decode exposing (decodeString, errorToString)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automatically sorted by elm-format.

@@ -99,11 +99,20 @@ knownValues =
\_ ->
Iso8601.toTime "2019-05-30T06:30"
|> Expect.equal (Ok (Time.millisToPosix 1559197800000))
, test "toTime supports negative timestamps (French Polynesia: Marquesas Islands)" <|
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test cases for the examples provided by @pd9333 in #31.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Minutes of negative offset also need multiplier
1 participant