I have a CSV generated from ThingSpeak, which contains a datetime containing a time zone identifier (CEST in my case). It looks like this:
created_at,entry_id,field1,field2,field3,latitude,longitude,elevation,status2020-06-06 18:36:17 CEST,1,434,2.12121212121,30.3487192708,,,,2020-06-06 18:36:33 CEST,2,433,2.11632453568,30.2823285934,,,,2020-06-06 18:36:48 CEST,3,436,2.13098729228,30.4815006257,,,,2020-06-06 18:37:03 CEST,4,433,2.11632453568,30.2823285934,,,,
Now, when I edit the file and remove " CEST" from all rows, readtimetable imports the file properly, with no issues. But when I leave it as is, readtable imports the field as text, while readtimetable refuses altogether.
I tried to specify the format manually, as so:
opts.VariableNames = ["created_at", "Var2", "field1", "Var4", "Var5", "Var6", "Var7", "Var8", "Var9"];opts.SelectedVariableNames = ["created_at", "field1"];opts.VariableTypes = ["datetime", "string", "double", "string", "string", "string", "string", "string", "string"];opts = setvaropts(opts, "created_at", "InputFormat", "dd-MM-yyyy HH:mm:ss z", "TimeZone", 'Europe/Warsaw');
With this, readtimetable works but… all fields are turned into NaT.
Now, this is some weird behavior, because using the datetime function with one of those fields copied works flawlessly:
>> date = datetime("2020-06-06 18:36:17 CEST","InputFormat","yyyy-MM-dd HH:mm:ss z","TimeZone","Europe/Warsaw")date = datetime 06-Jun-2020 18:36:17
Matlab's importer also can't handle it, when I use the CSV file as the input it wrongly detects the delimiter, once that's corrected and field type set to datetime, any way I tried configuring the input format just fails and results in NaTs. I even attempted to set the format to "yyyy-MM-dd HH:mm:ss 'CEST'", so the time zone gets treated as a string, but it still fails to recognize it as a correct datetime.
Using Matlab R2020a
Best Answer