How can I convert datetime into double?
    132 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I have a data which is 60 x 4320 datetime, each cell is 2019/01/01 00:00:00 and want to convert this into 60 x 4320 double. 
I tried to use datevec(data) but it resulted 259200 x 6 double, one row one character, like 
2019 01 01 00 00 00
2019 01 01 00 10 00
2019 01 01 00 20 00
3 Commenti
  Steven Lord
    
      
 il 17 Nov 2021
				You cannot have a double array where some of the elements are datetime values, that is true. But if you have date- and/or time-stamped data, I suggest using a timetable instead.
T = datetime('today');
randomDays = T + days(randi([-7 7], 10, 1));
x = (1:10).';
myTimedData = timetable(randomDays, x)
Risposte (3)
  galaxy
      
 il 12 Dic 2019
        Example:
>> t = datetime('now')
t = 
  datetime
   2019/12/12 09:43:30
>> DateNumber = datenum(t)
DateNumber =
   7.3777e+05
After that, if you want to convert back:
   >> datetime(DateNumber,'ConvertFrom','datenum')
ans = 
  datetime
   2019/12/12 09:43:30
hope it helps
0 Commenti
  Eric Sofen
    
 il 13 Dic 2019
        What do you want the doubles to represent? 
Datenum returns a double represents days since 0 CE. 
The posixtime function would give you a double representing seconds since the Unix epoch (00:00:00 1-Jan-1970 UTC).
The trouble with using double to represent dates and times is that there isn't one definition (there are also precision-related issues over long spans of time). 
I'm curious if you'd be willing to share what you want to do with the doubles, and why you can't do it using datetime?
0 Commenti
  Tianchu Lu
 il 16 Giu 2024
        
      Modificato: Adam Danz
    
      
 il 19 Giu 2024
  
      Hi,
I have got the same problem, and I think I have managed to solve it. 
This function does exactly what it is. Although this is for a cell array, just change {} brace bracket to () round bracket if your data type is not a cell type.
But please let me know if you are going to use it. 
Thanks
Tian
function datetime_double_matrix = convertDatetimeCellArray(datetime_array)
    % Convert a 1xN cell array of datetime strings to a 6xN double matrix
    % in the order of [YYYY, MM, DD, HH, MN, SS]
    % Initialize a matrix to store the date vectors
    num_entries = length(datetime_array);
    datetime_double_matrix = zeros(6, num_entries);
    % Loop through the cell array and convert each datetime to a date vector
    for i = 1:num_entries
        % Convert the datetime string to a date vector
        date_vector = datevec(datetime_array{i});
        % Transpose the date vector and store it in the matrix
        datetime_double_matrix(:, i) = date_vector';
    end
end
1 Commento
  Adam Danz
    
      
 il 19 Giu 2024
				You could also just use datevec(datetimeStrings)'
dtstr = {'12/10/2020 10:22:03','1/24/2021 22:00:01','9/9/1999'};
convertDatetimeCellArray(dtstr)
datevec(dtstr).'
function datetime_double_matrix = convertDatetimeCellArray(datetime_array)
    % Convert a 1xN cell array of datetime strings to a 6xN double matrix
    % in the order of [YYYY, MM, DD, HH, MN, SS]
    % Initialize a matrix to store the date vectors
    num_entries = length(datetime_array);
    datetime_double_matrix = zeros(6, num_entries);
    % Loop through the cell array and convert each datetime to a date vector
    for i = 1:num_entries
        % Convert the datetime string to a date vector
        date_vector = datevec(datetime_array{i});
        % Transpose the date vector and store it in the matrix
        datetime_double_matrix(:, i) = date_vector';
    end
end
Vedere anche
Categorie
				Scopri di più su Dates and Time in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






