Check for incorrect argument data type or missing argument in call to function 'dateshift'.
Mostra commenti meno recenti
I have a function that calculates left hours till noon
input time: 18:56:19
output hours till noon: 17:03:41
Rounded hours left till noon, output should be 17:00:00
dateshift('17:03:41', 'start', 'hour', 'nearest');
Output: 17:00:00
But when my input hours are less 12 hours it throughs an error:
input time: 06:01:31
output hours till noon: 05:58:29
Rounded hours left till noon, output should be 06:00:00
dateshift('06:01:31', 'start', 'hour', 'nearest');
Check for incorrect argument data type or missing argument in call to function 'dateshift'.
Error in hoursLeftTillNoon (line 64)
hoursLeft = dateshift(hoursLeft, 'start', 'hour', 'nearest');
hoursLeft = output hours till noon
Risposte (1)
the cyclist
il 16 Nov 2021
Modificato: the cyclist
il 16 Nov 2021
I get the error from your first statement as well:
% This statement would give an error
% dateshift('17:03:41', 'start', 'hour', 'nearest')
But not if I use a datetime as input:
dateshift(datetime('17:03:41'), 'start', 'hour', 'nearest')
4 Commenti
Palina Pauliuchenka
il 16 Nov 2021
time = datetime('now', 'Format', 'HH:mm:ss');
noon = datetime('12:00:00', 'Format', 'HH:mm:ss');
hoursLeft = noon - time;
hoursLeft = dateshift(hoursLeft, 'start', 'hour', 'nearest');
Subtracting two DATETIME objects returns a DURATION object.
DATESHIFT is only defined for a DATETIME input argument, not a DURATION input argument.
Therefore as the error message correctly states, the input data type is incorrect.
You should make an enhancement request that DATESHIFT should accept DURATION objects (TIMESHIFT?).
Palina Pauliuchenka
il 16 Nov 2021
the cyclist
il 16 Nov 2021
Modificato: the cyclist
il 16 Nov 2021
I tried to replicate an example where hoursLeft is 17:03:01 using your code:
time1 = datetime('02:56:19', 'Format', 'HH:mm:ss');
time2 = datetime('20:00:00', 'Format', 'HH:mm:ss');
hoursLeft = time2 - time1;
hoursLeft = dateshift(hoursLeft, 'start', 'hour', 'nearest');
I believe this fails because hoursLeft is a duration, not a datetime.
So, I'm sorry, but I'm still confused about the exact code that does work, and the code that does not. Can you please provide a complete example of each case, that we can run?
Categorie
Scopri di più su Dates and Time in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!