File tree Expand file tree Collapse file tree 2 files changed +16
-3
lines changed Expand file tree Collapse file tree 2 files changed +16
-3
lines changed Original file line number Diff line number Diff line change @@ -1599,11 +1599,13 @@ defmodule DateTime do
15991599 end
16001600
16011601 naive_diff =
1602- ( datetime1 |> to_iso_days ( ) |> Calendar.ISO . iso_days_to_unit ( unit ) ) -
1603- ( datetime2 |> to_iso_days ( ) |> Calendar.ISO . iso_days_to_unit ( unit ) )
1602+ ( datetime1 |> to_iso_days ( ) |> Calendar.ISO . iso_days_to_unit ( :microsecond ) ) -
1603+ ( datetime2 |> to_iso_days ( ) |> Calendar.ISO . iso_days_to_unit ( :microsecond ) )
16041604
16051605 offset_diff = utc_offset2 + std_offset2 - ( utc_offset1 + std_offset1 )
1606- naive_diff + System . convert_time_unit ( offset_diff , :second , unit )
1606+
1607+ System . convert_time_unit ( naive_diff , :microsecond , unit ) +
1608+ System . convert_time_unit ( offset_diff , :second , unit )
16071609 end
16081610
16091611 @ doc """
Original file line number Diff line number Diff line change @@ -807,6 +807,17 @@ defmodule DateTimeTest do
807807 # Test with a non-struct map conforming to Calendar.datetime
808808 assert DateTime . diff ( Map . from_struct ( dt1 ) , Map . from_struct ( dt2 ) ) == 3_281_904_000
809809 end
810+
811+ test "diff with microseconds" do
812+ datetime = ~U[ 2023-02-01 10:30:10.000000Z]
813+
814+ in_almost_7_days =
815+ datetime
816+ |> DateTime . add ( 7 , :day )
817+ |> DateTime . add ( - 1 , :microsecond )
818+
819+ assert DateTime . diff ( in_almost_7_days , datetime , :day ) == 6
820+ end
810821 end
811822
812823 describe "from_naive" do
You can’t perform that action at this time.
0 commit comments