Extract time (hour+minute+second) from datetime vector
150 次查看(过去 30 天)
显示 更早的评论
I have an array that has datetime in one column, and a rate in the second column. i want to make a plot that just has on the x axis, a 24 hour day, and I want to see how the data varies over the course of the day. My dataset is a month long - so I'd like to plot all of that data and visualize it by time of day.
i don't know how to extract just the hour+minute+second data in ONE column. I know I can get hour separately, minute separately, etc. but I just want a column that says 01:30:22 for example, for each datetime value I have. I've looked at the function datetime but I'm pretty sure that gives me day as well? I JUST want time in the output
For reference, my table (BNFrates) has datetime in this format: 738771.683333333
Thank you!
2 个评论
采纳的回答
更多回答(2 个)
Steven Lord
2023-10-25
If you can use a datetime array instead of serial date numbers (or convert the serial date numbers to datetime):
rightnow = datetime('now')
use the timeofday function.
[timeSinceMidnight, midnight] = timeofday(rightnow)
To convert, first let's get the serial date number (you wouldn't need to do this, as you already have it. I need to do it so I can show you the results.)
format longg
serialDateNumber = datenum(rightnow)
Then call datetime with an option:
rightnow2 = datetime(serialDateNumber, 'ConvertFrom', 'datenum')
Dyuman Joshi
2023-10-25
移动:Dyuman Joshi
2023-10-25
Here's an approach -
in = load('example_array.mat')
vec = in.BNFratesall_NaN1;
%Convert the dates to datetime()
dt = datetime(vec(:,1), 'ConvertFrom', 'datenum')
%Get the hour, minute and second values
[h,m,s] = hms(dt);
%Get the output as a duration() array
out = duration(h,m,s)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Dates and Time 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!