Julian way to do strptime?

I’m converting an R script that uses strptime to extact datetime data from strings. Is there a more Julian way of doing this than calling Base.Libc.strptime?

I’m not very familiar with either string or date handling in Julia.

there is, what format specifiers occur in those uses of striptime? (show me a few examples, it is easier to explain how to do it in Julia with a few specific uses).

Sure:

Base.Libc.strptime.("SMAP_L4_SM_gph_%Y%m%dT%H%M%S", filenames)

Are all of the strings are prefixed with “SMAP_L4_SM_gph_” ?

(would 2018-May-17 at 22:18:05 be given as “SMAP_L4_SM_gph_20180517T221805”)

using Dates

str = "SMAP_L4_SM_gph_20180517T221805"

# Define the format, `S` and `M` need to be escaped because they
# are format identifiers
df = dateformat"\S\MAP_L4_\S\M_gph_yyyymmddTHHMMSS"

DateTime(str, df)
# 2018-05-17T22:18:05
5 Likes

first, lets convert a string that only contains the date+time, given in that same pattern (yyyymmddTHHMMSS) where the “T” serves to separate the date part from the time part.

using Dates

myformat = dateformat"yyyymmddTHHMMSS"

str = "20180517T221805"

mydatetime = DateTime(str, muformat)

with that this happens

julia> mydatetime = DateTime(str, myformat)
2018-05-17T22:18:05

julia> Date(mydatetime), Time(mydatetime)
(2018-05-17, 22:18:05)
2 Likes

now lets suppose that all your date+time strings are prefixed by some (nonempty) character sequence that ends with ‘_’ (the [last] underscore in the string comes before the first digit of the year). This way you can have a slightly more general converter.

using Dates

myformat = dateformat"yyyymmddTHHMMSS"

strip_prefixed_chars(filenamestr) = split(filenamestr, '_')[end]

with that we can do this

julia> str = "SMAP_L4_SM_gph_20180517T221805"
"SMAP_L4_SM_gph_20180517T221805"

julia> mydatetime =  DateTime(strip_prefixed_chars(str), myformat)
2018-05-17T22:18:05

Ok dateformat string macro is the thing! so obvious I missed it.

Thanks!

But what if the string has a day-of-year? I couldn’t find a format that allows parsing, e.g.
“2021059T185321”

(many satellite products use variations of this to name their files)