File tree Expand file tree Collapse file tree 2 files changed +23
-3
lines changed Expand file tree Collapse file tree 2 files changed +23
-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,24 @@ 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.123456Z]  
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 
821+ 
822+     test  "diff in microseconds"  do 
823+       datetime1  =  ~U[ 2023-02-01 10:30:10.000000Z]  
824+       datetime2  =  DateTime . add ( datetime1 ,  1234 ,  :microsecond ) 
825+ 
826+       assert  DateTime . diff ( datetime1 ,  datetime2 ,  :microsecond )  ==  - 1234 
827+     end 
810828  end 
811829
812830  describe  "from_naive"  do 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments