2017-05-18 2 views
0

Ich möchte 83012 (ein int) zu "8:30:12" (eine Zeichenfolge) in Matlab konvertieren. Ich konnte keine klare Antwort finden. Das eigentliche Problem ist das Hinzufügen der Doppelpunkte. Jede Hilfe wird geschätzt. es ist in Intervallen von 15 SekundenKonvertieren der Nummer in eine tatsächliche Zeit Zeichenfolge in Matlab

%Get the start time value from User 
str1  = get(handles.StartEditTag, 'string'); 
newstr1 = erase(str1, ':'); %Take out colons (eg '6:30:00' -> '63000') 
startVal = str2num(newstr1); %Convert string to num (eg '63000' -> 63000) 

%Get the end time value from the User 
str2 = get(handles.EndEditTag, 'string'); 
newstr2 = erase(str2, ':'); 
endVal = str2num(newstr2); 

roundStart = mod(startVal, 100); %(eg 63000 -> 00) 
roundEnd = mod(endVal, 100); 

if mod(roundStart, 15) ~= 0 
    %Round to the nearest multiple of 15 (eg 83027 -> 83030) 
    startVal = Roundto15(roundStart, startVal); %function I made to round 
end 

if mod(roundEnd, 15) ~= 0 
    endVal = Roundto15(roundEnd, endVal); 
end 

startString = int2str(startVal); %(eg 83030 -> '83030') 
endString = int2str(endVal); 

Ich bin ein Zeitintervall von dem Benutzer zu nehmen und sicher zu machen. Das habe ich bisher.

+0

Das scheint einfach. Zeigen Sie Ihren Code und jemand wird Ihnen schnell sagen, wie Sie die Doppelpunkte hinzufügen –

+0

Just posted, was ich habe. – Matt

Antwort

3

Angenommen, Ihre ganze Zahl immer 5 oder 6 Stellen

time_int=83012; 
time_str=num2str(time_int); 
result=strcat(time_str(1:end-4),':',time_str(end-3:end-2),':',time_str(end-1:end)); 

Edit: A Schöner Weg, um das Ganze zu tun

% The string you get from the user 
str1 = '16:30:12'; 

% Extraing hours, minutes, seconds 
C1 = textscan(str1,'%d:%d:%d'); 

% converting the time to seconds 
time1_in_seconds = double((C1{1}*3600)+(C1{2}*60)+C1{3}); 

% rounding to 15 sec 
time1_in_seconds_round15 = round(time1_in_seconds/15)*15; 

% getting the new hours, minutes and seconds 
hours = floor(time1_in_seconds_round15/3600); 
minutes = floor((time1_in_seconds_round15 - hours*3600)/60); 
seconds = time1_in_seconds_round15 - hours*3600 - minutes*60; 

% getting the string 
s = sprintf('%d:%d:%d', hours, minutes, seconds); 
1

zuerst Ihre Arithmetik tun, um die Stunden, Minuten und Sekunden zu berechnen, dann String-Formatierung:

s = sprintf('%d:%02d:%02d', hours, minutes, seconds) 
Verwandte Themen