Can I set a datetime locale for readtable in a script?

8 views (last 30 days)
I am having problems reading datetimes with readtable. This is on a set of csv files where the date and time formats differ slightly. (I have no control over the file format.)
One file might have:
12/01/2024 01:00:05, 1
Another file might have:
12/1/2024 1:00:05, 1
All dates are in UK-style format. My default locale (on Linux) is en_US.utf8.
When I use readtable, MATLAB correctly parses the date format as being UK-style for most of the files. But for some files, it uses the US format. This if for files where the day number never goes above 12.
I don't want to change the default Linux locale, or the default MATLAB locale, because I have existing scripts that read dates in US-style format.
How can I change this one script to force MATLAB to use UK-style dates? Specifying the format as "dd/MM/yyyy :hh:mm:ss" doesn't seem to work because of the lack of zero-padding at times.

Accepted Answer

Star Strider
Star Strider on 12 Feb 2025
Note that "dd/MM/yyyy :hh:mm:ss" uses 12-hour format (using hh for the hours) without the AM/PM indicator. To use 24-hour format, use HH for the hours.
If the AM/PM indicator is the ‘1’ it might be necessary to programatically change that (using strrep or something similar), since I cannot find any reference to it in the documentation.
  3 Comments
Walter Roberson
Walter Roberson on 12 Feb 2025
datetime(["12/1/2024 1:00:05", "12/01/2024 01:00:05"], 'InputFormat', 'dd/MM/yyyy HH:mm:ss')
ans = 1x2 datetime array
12-Jan-2024 01:00:05 12-Jan-2024 01:00:05

Sign in to comment.

More Answers (0)

Categories

Find more on Dates and Time in Help Center and File Exchange

Products


Release

R2024b

Community Treasure Hunt

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

Start Hunting!