calculate the difference between two datetime values
80 次查看(过去 30 天)
显示 更早的评论
I wish to calculate the difference between two datetime values. I converted them to "datenum" and then subtracted them and tried to use the "datetime" to get the results in the date and time format. however, the results yielded are incorrect and the dates it mentions is in December 1999. I have attached my code and the file. Any help would be appreciated. Thanks in advance.
2 个评论
Jan
2017-10-11
The results are correct, but you expect something else: If the result of the subtraction is e.g. 1 s, a conversion to a datetime object means the first second of the year, which is treated as year 0 internally.
回答(1 个)
Walter Roberson
2017-10-11
Just subtract the two datetime variables. The result will be a duration object. You can express it in particular time units by setting the Format property of the duration object, or you can use calls like hours() or seconds() to get the numeric equivalent relative to those units.
3 个评论
Walter Roberson
2017-10-11
It does not make sense to convert the difference in datetimes back to a a datetime object.
If the start time is (say) June 19, 1973 18:21 and the end time is (say) June 19, 1973 18:31, then what output would you be hoping for?
Peter Perkins
2017-10-13
To illustrate what Walter is suggesting:
>> A = readtable('Oxygenvelocity.csv');
Warning: Variable names were modified to make them valid MATLAB identifiers. The original names are saved in the
VariableDescriptions property.
>> A
A =
216×4 table
DateAndTime Subsurface_Dopto_ DateAndTime_1 Surface_Exo_
________________ _________________ ________________ ____________
23/07/2015 14:30 14.046 23/07/2015 17:15 5.9
24/07/2015 04:00 9.278 24/07/2015 00:00 5.61
25/07/2015 00:00 12.375 25/07/2015 22:45 5.12
26/07/2015 01:00 13.031 26/07/2015 21:45 5.43
27/07/2015 00:30 14.615 27/07/2015 14:00 5.72
>> A.TimeDiff = A.DateAndTime - A.DateAndTime_1
A =
216×5 table
DateAndTime Subsurface_Dopto_ DateAndTime_1 Surface_Exo_ TimeDiff
________________ _________________ ________________ ____________ _________
23/07/2015 14:30 14.046 23/07/2015 17:15 5.9 -2:45:00
24/07/2015 04:00 9.278 24/07/2015 00:00 5.61 04:00:00
25/07/2015 00:00 12.375 25/07/2015 22:45 5.12 -22:45:00
26/07/2015 01:00 13.031 26/07/2015 21:45 5.43 -20:45:00
27/07/2015 00:30 14.615 27/07/2015 14:00 5.72 -13:30:00
A.TimeDiff is a duration that measures how many hours/minutes/seconds elapsed between the two datetimes. That seems like what you would want.
All your timestamps seem to be on the same day. If you were working with longer time spans, it's possible that you would want to use the between function, which can return elapsed time in terms of calendar units like months and days, rather than subtraction.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Calendar 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!