Check for incorrect argument data type or missing argument in call to function 'dateshift'.
Mostrar comentarios más antiguos
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
Respuestas (1)
the cyclist
el 16 de Nov. de 2021
Editada: the cyclist
el 16 de Nov. de 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 comentarios
Palina Pauliuchenka
el 16 de Nov. de 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
el 16 de Nov. de 2021
the cyclist
el 16 de Nov. de 2021
Editada: the cyclist
el 16 de Nov. de 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?
Categorías
Más información sobre Dates and Time en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!