Why between(datetime1, datetime2) is different from (-1)*between(datetime2, datetime1)?
    조회 수: 5 (최근 30일)
  
       이전 댓글 표시
    
I am trying to measure the number of 'quarters' apart, between a single datetime r, and a vector of datetimes v. Could somebody please explain why Q1 & Q2 are different?
r = datetime(1991,6,30,'Format','dd/MM/yyyy'); 
v = dateshift(datetime(1990,12,31,'Format','dd/MM/yyyy'),'end','quarter',0:5);
%CASE 1
dif = between(r, v, 'quarters')
Q1 = split(dif, 'quarters')
%CASE 2
dif = between(v, r, 'quarters')
Q2 = (-1)*split(dif, 'quarters')
댓글 수: 1
  the cyclist
      
      
 2024년 3월 4일
				
      편집: the cyclist
      
      
 2024년 3월 4일
  
			A distilled version of the question is, why is there a "magnitude" difference between the outputs below? It is admittedly counter-intuitive.
dt1 = datetime("30/06/1991","Format",'dd/MM/yyyy');
dt2 = datetime("31/12/1990","Format",'dd/MM/yyyy');
between(dt1,dt2)
between(dt2,dt1)
답변 (1개)
  Voss
      
      
 2024년 3월 4일
        
      이동: Dyuman Joshi
      
      
 2024년 3월 5일
  
      "In general, t2 is not equal to t1 + dt, unless you include 'time' in components."
댓글 수: 3
  Dyuman Joshi
      
      
 2024년 3월 5일
				r = datetime(1991,6,30,'Format','dd/MM/yyyy')
v = dateshift(datetime(1990,12,31,'Format','dd/MM/yyyy'),'end','quarter',0:5)
The difference is not symmetric/identical for every time component - 
str = {'years','quarters','months','weeks','days' };
for k=1:numel(str)
    disp(str{k})
    disp('CASE 1')
    disp(between(r, v, str{k}))
    disp('CASE 2')
    disp(between(v, r, str{k}))
    disp(' ')
end
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



