The built in comparison operators aren’t the right tool for this job. You probably want to use Timex.compare/3.
For an explanation of why this is the case you might find this useful. Especially this quote:
Maps are compared by size, then by keys in ascending term order, then by values in key order. In the specific case of maps’ key ordering, integers are always considered to be less than floats.
i was wrong a test to make sure my project working… but seem not work
test "compare with operations" do
#equal
a = Timex.parse!( "2017-01-01T01:00:00.751Z", "{ISO:Extended:Z}" )
b = Timex.parse!( "2017-01-01T01:00:00.751Z", "{ISO:Extended:Z}" )
assert( a == b )
assert( ( a < b ) == false )
assert( ( a > b ) == false )
assert( ( a <= b ) == true )
assert( ( a >= b ) == true )
#offset 1ms
a = Timex.parse!( "2017-01-01T01:00:00.750Z", "{ISO:Extended:Z}" )
b = Timex.parse!( "2017-01-01T01:00:00.751Z", "{ISO:Extended:Z}" )
assert( ( a == b ) == false )
assert( ( a < b ) == true )
assert( ( a > b ) == false )
assert( ( a <= b ) == true )
assert( ( a >= b ) == false )
#offset 5secs
a = Timex.parse!( "2019-01-01T00:00:00.000Z", "{ISO:Extended:Z}" )
a = Timex.parse!( "2019-01-01T00:00:05.000Z", "{ISO:Extended:Z}" )
assert( ( a == b ) == false )
assert( ( a < b ) == true )
assert( ( a > b ) == false )
assert( ( a <= b ) == true )
assert( ( a >= b ) == false )
end
I need to add this paragraph to remind me of myself
#Tips: the operation compare will fail with milliseconds, instead by Timex.compare
a = Timex.parse!( "2019-01-01T00:00:05.000Z", "{ISO:Extended:Z}" )
b = Timex.parse!( "2019-01-01T00:00:00.100Z", "{ISO:Extended:Z}" )
assert( ( a == b ) == false )
assert( ( a <= b ) == true ) # it's wrong, normally it's should be false