Is there a way to convert times in this format to double, so I can perform mathematical operations on them?
    12 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Teshan Rezel
      
 le 24 Jan 2022
  
    
    
    
    
    Commenté : Teshan Rezel
      
 le 24 Jan 2022
            Hi folks,
I have an array of times that looks like this:
[1059, 1100, 1101...]
where 1059 = 59 minutes past 10am. I need to work out the elapsed number of minutes for each consequent element of the array. However, if I were to deduct 100-1059, I get 41 instead of 1. 
Whilst there is a roundabout way of doing this, I was wondering if there's functionality in Matlab that will allow me to do this in a more elegant way?
Thank you in advance!
0 commentaires
Réponse acceptée
  Steven Lord
    
      
 le 24 Jan 2022
        How do you know that 100 represents 1 PM instead of 1 AM? Would it make more sense to adjust x so it includes 1300 instead of 100?
x = [1059, 1100, 1101, 100];
m = mod(x, 100);
h = (x-m)/100;
% Adjust h here using your rules so that 100 represents 1 PM instead of 1 AM
d = hours(h) + minutes(m);
d.Format = 'hh:mm'
difference = diff(d)
differenceInMinutes = minutes(difference)
Plus de réponses (1)
  Benjamin Thompson
      
 le 24 Jan 2022
        MATLAB has a lot of date and time functions, as described by the article "Dates and Time" in the help documentation.  If you are able to convert your four digit time codes into strings where hours and minutes are separated by a colon:
t = datetime({'10:59', '11:00', '11:01'},'Format','HH:mm')
t = 
  1×3 datetime array
   10:59   11:00   11:01
>> dt = diff(t)
dt = 
  1×2 duration array
   00:01:00   00:01:00
0 commentaires
Voir également
Catégories
				En savoir plus sur Dates and Time dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


