Problem with "datenum" and "datetime" functions

1 visualizzazione (ultimi 30 giorni)
I need to extract date information from a formated date string. I have used both datenum and datetime functions but both of them returned an error. However, when I run the code on a different computer it worked well. Here is the simple code and the corresponding error:
Example for DATENUM:
datenum('11/02/2005 13:10:00','dd/mm/yyyy HH:MM:SS')
datenum('11/02/2005 13:10:00','dd/mm/yyyy HH:MM:SS')
Error: Invalid text character. Check for unsupported symbol,
invisible character, or pasting of non-ASCII characters.
Example for DATETIME:
datetime('11/02/2005 13:10:00','InputFormat','dd/MM/yyyy HH:mm:ss')
datetime('11.02.2005 13:10:00','InputFormat','dd.MM.yyyy HH:mm:ss')
Error: Invalid text character. Check for unsupported symbol,
invisible character, or pasting of non-ASCII characters.
Why don't the functions work on my computer?
  3 Commenti
Peter Valent
Peter Valent il 29 Apr 2019
@Stephen Cobeldick: I think that no example script is neccesary. When I copy the two lines of code given in the question I get the error on one computer but no error at another one.
The specs of the PC where it throws error are: WIN10, MATLAB R2018b - academic use.
The specs of the PC where it does not throw error are: WIN10, MATLAB R2017a - academic use.
Moreover, the following code also doesn't work on the first PC and works on the second PC:
sscanf('10/10/10 10:10:10','%d/%d/%d %d:%d:%d')
Shubhra S
Shubhra S il 8 Set 2021
Modificato: Shubhra S il 8 Set 2021
I am also facing a similar error.The function works on one pc and doesn't work on another

Accedi per commentare.

Risposta accettata

Sean de Wolski
Sean de Wolski il 29 Apr 2019
I was able to reproduce this by copying your code from above. It appears the opening ( is bad (right where the arrow is)
datetime('11/02/2005 13:10:00','InputFormat','dd/MM/yyyy HH:mm:ss')
Deleting your ( and replacing with my ( fixed it.
Further investigating it looks like there is an invisible character after the (
int32('(')
ans =
1×2 int32 row vector
40 65279
  1 Commento
Peter Valent
Peter Valent il 30 Apr 2019
I have addet the following check, which solved the problem.
textToConvert = '11/02/2005 13:10:00';
acceptedCharacters = int32([' ','.','/',int32(arrayfun(@num2str,0:9)),':']);
textToConvert = textToConvert(ismember(int32(textToConvert),acceptedCharacters));
datenum(textToConvert,'dd/mm/yyyy HH:MM:SS')

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Dates and Time in Help Center e File Exchange

Prodotti


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by