Add up millisecond steps to a certain datetime
53 次查看(过去 30 天)
显示 更早的评论
I try to add milliseconds to a certain datetime. In dtStart.Var1 the times are in milliseconds (25,50,75, ...). I would like to add this to my current time_of_day. With my code, however, in the end I lose the milliseconds when converting back to datetime.
DateVector = datevec(time_of_day);
A = (dtStart.Var1/1000)+DateVector(:,6);
C = cat(2,DateVector,A);
B = C(:,[1,2,3,4,5,7]);
time = datetime(B,'InputFormat','yyyy-MM-dd HH:mm:ss.SSS');
0 个评论
采纳的回答
Chunru
2021-12-15
Use "Format" for output (not "InputFormat" which is for input).
DateVector = [2021 12 15 01 30 05]
A = DateVector;
A(6) = (345/1000)+A(:,6) % ms: 345
time = datetime(A, 'Format','yyyy-MM-dd HH:mm:ss.SSS')
更多回答(1 个)
Siddharth Bhutiya
2021-12-30
编辑:Siddharth Bhutiya
2021-12-30
You don't need to convert the datetime into a datevec. You can convert your millisecond values into a duration using the milliseconds function and directly add it to the datetime.
>> dt = datetime(2021,12,(1:5)',"Format","dd-MMM-uuuu HH:mm:ss.SSS")
dt =
5×1 datetime array
01-Dec-2021 00:00:00.000
02-Dec-2021 00:00:00.000
03-Dec-2021 00:00:00.000
04-Dec-2021 00:00:00.000
05-Dec-2021 00:00:00.000
>> millisVals = [100;200;300;123;456];
>> dt = dt + milliseconds(millisVals)
dt =
5×1 datetime array
01-Dec-2021 00:00:00.100
02-Dec-2021 00:00:00.200
03-Dec-2021 00:00:00.300
04-Dec-2021 00:00:00.123
05-Dec-2021 00:00:00.456
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!