Effacer les filtres
Effacer les filtres

rounded time value with intervals

6 vues (au cours des 30 derniers jours)
Elena
Elena le 20 Fév 2022
Modifié(e) : Cris LaPierre le 21 Fév 2022
Im trying to convey the seconds since midnight into the format HH:MM PM (or AM). So far I have this:
secondsSinceMidnight = 26850.431
minuteInterval = 15
datestr(seconds(timestamp),'HH:MM PM')
The problem is that when it's an time like '7:27 AM', it needs to say '07:30 AM' ( i.e. have the zero in front and round up to closest 15 min interval).
How would I go about those two fixes?

Réponse acceptée

Voss
Voss le 20 Fév 2022
Something like this might work for your purposes:
secondsSinceMidnight = 26850.431;
minuteInterval = 15;
% round *up* to next 15 minutes:
% timestamp = ceil(secondsSinceMidnight/60/minuteInterval)*minuteInterval*60;
% or round to *nearest* 15 minutes:
timestamp = round(secondsSinceMidnight/60/minuteInterval)*minuteInterval*60;
% make a character array via datestr():
str = datestr(seconds(timestamp),'HH:MM PM');
% datestr doesn't include leading 0 with AM/PM format (see documentation),
% so: manually put leading 0 in if necessary:
if str(1) == ' '
str(1) = '0';
end
disp(str);
07:30 AM

Plus de réponses (1)

Cris LaPierre
Cris LaPierre le 20 Fév 2022
Modifié(e) : Cris LaPierre le 21 Fév 2022
I think in this case, it's easiest to round the seconds to the closest 15-minute increment. This uses 24-hr time, so no AM/PM is necessary.
minuteInterval = 15;
secondsSinceMidnight = 26850.431;
% calculate the closest 15-minute increment
seconds15min = round(secondsSinceMidnight/minuteInterval/60)*minuteInterval*60;
% Convert to a duratoin
t = seconds(seconds15min)
t = duration
27000 sec
% format the time
t.Format = 'hh:mm'
t = duration
07:30

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by