How do I make an array of elapsed times?
    조회 수: 9 (최근 30일)
  
       이전 댓글 표시
    
I have array, stopdates, that I need the number of seconds elapsed from t1 for each date. This is what I have been working with:
format shortg
str = 'April 18, 1995 12:00:00';
t1 = datevec(str,'mmmm dd, yyyy HH:MM:SS');
str2 = stopdate(1,runs);
t2 = datevec(str2,'mmmm dd, yyyy HH:MM:SS');
nt = etime(t2,t1);
댓글 수: 2
  njj1
      
 2018년 4월 25일
				What is stopdate?
Here is an easy solution that does not require etime. If you get your t# into datenum instead of datevec, then you can just subtract and cumsum everything.
%given t is a vector of datenum
t = [0;cumsum(diff(t))];
답변 (3개)
  dpb
      
      
 2018년 4월 25일
        str = 'April 18, 1995 12:00:00';
t1 = datetime(str,'inputformat','MMM dd, yyyy HH:mm:ss');
stoptime=datetime(stopdate,'inputformat','MMM dd, yyyy HH:mm:ss');
dt=stoptime-t1;
dtSecs=seconds(dt);
Read up on datetime and duration
댓글 수: 0
  njj1
      
 2018년 4월 25일
        
      편집: njj1
      
 2018년 4월 25일
  
      OK, so this sounds like it's inside a for loop, in which case you could try something like this:
for runs=number_of_runs:-1:1
  %I run this backwards to ensure that my vector t is pre-allocated
  t(runs) = datenum(stopdate(runs,:),'mmmm dd, yyyy HH:MM:SS');
end
%after this for loop, we have a vector t where each entry is a datenum
t = [0;cumsum(diff(t))];
Hope this helps.
댓글 수: 1
  njj1
      
 2018년 4월 25일
				Actually, you don't need to use the for loop if all the date strings in your vector stopdate are in the same format.
t = datenum(stopdate,'mmmm dd, yyyy HH:MM:SS');
t = [0;cumsum(diff(t))];
  Peter Perkins
    
 2019년 1월 23일
        Unless you are using a pretty old version of MATLAB (< R2014b), use datetimes:
>> t1 = datetime('April 18, 1995 12:00:00','InputFormat','MMMM dd, yyyy HH:mm:ss')
t1 = 
  datetime
   18-Apr-1995 12:00:00
>> t2 = datetime({'April 20, 1995 22:26:45' 'April 24, 1995 15:25:42' 'April 27, 1995 19:01:23'},'InputFormat','MMMM dd, yyyy HH:mm:ss')
t2 = 
  1×3 datetime array
   20-Apr-1995 22:26:45   24-Apr-1995 15:25:42   27-Apr-1995 19:01:23
>> t2 - t1
ans = 
  1×3 duration array
    58:26:45   147:25:42   223:01:23
>> between(t1,t2)
ans = 
  1×3 calendarDuration array
   2d 10h 26m 45s    6d 3h 25m 42s     9d 7h 1m 23s
댓글 수: 0
참고 항목
카테고리
				Help Center 및 File Exchange에서 Time Series Objects에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



