How to extract hour+minute from DateTime vector ?

21 次查看(过去 30 天)
Q: how do I best extract BOTH the hour + minute from a DateTime vector in MATLAB ? My DateTime format is: 15-Apr-2016 11:43:11
I need to fine-tune the rush hours to the exact time ranges below. My current code, below, works but does not include the 'minutes'. Please help.
t = datetime(data.DateTime);d = day(t,'dayofyear'); DayofYr = d;
tf = isweekend(t); % returns logical 1 = true = weekend, else 0
Wkend = tf;
h = hour(data.DateTime); % extract hour from Datetime vector
isAMRush = h>=7 & h<9 ==1; % needs to be revised to: 745a -845a morning rush
isPMRush = h>=15 & h<17 ==1; % needs to be revised to: 330p -430p afternoon rush
%
  2 个评论
Stephen23
Stephen23 2022-6-8
D = datetime(2016,4,5,[8;11],43,11)
D = 2×1 datetime array
05-Apr-2016 08:43:11 05-Apr-2016 11:43:11
isAMRush = isbetween(timeofday(D),duration(7,45,0),duration(8,45,0))
isAMRush = 2×1 logical array
1 0
Doug Leaffer
Doug Leaffer 2022-6-8
Iwill run this code suggestion. Thank you for the advice and the example output, which is helpful

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2022-6-8
D = datetime(2016,4,5,[8;11],43,11)
D = 2×1 datetime array
05-Apr-2016 08:43:11 05-Apr-2016 11:43:11
isAMRush = isbetween(timeofday(D),duration(7,45,0),duration(8,45,0))
isAMRush = 2×1 logical array
1 0
  1 个评论
Peter Perkins
Peter Perkins 2022-6-13
Right.
I mean the real answer is, "you hardly ever need to actually explicitly extract individual time components."

请先登录,再进行评论。

更多回答(2 个)

dpb
dpb 2022-6-8
Convert to durations and use
isAMRush=iswithin(duration(hour(t),minute(t),0),duration(7,45,0),duration(8,45,0));

Steven Lord
Steven Lord 2022-6-8
d = datetime('15-Apr-2016 11:43:11')
d = datetime
15-Apr-2016 11:43:11
[h, m, s] = hms(d)
h = 11
m = 43
s = 11
or
tod = timeofday(d)
tod = duration
11:43:11

类别

Help CenterFile Exchange 中查找有关 Dates and Time 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by