shikhanshu
shikhanshu

Reputation: 1548

Python : Matching a custom date format in a string

I have a string like this:

>>> string = "bla_bla-whatever_2018.02.09_11.34.09_more_bla-123"

I need to extract the date 2018.02.09_11.34.09 from it. It will always be in this format.

So I tried:

>>> match = re.search(r'\d{4}\.\d{2}\.\d{2}_\d{2}\.\d{2}\.\d{2}', string)

It correctly extracts out the date from that string:

>>> match.group()
'2018.02.09_11.34.09'

But then when I try to create a datetime object from this string, it doesn't work:

>>> datetime.datetime.strptime(match.group(), '%Y.%m.%d_%H.%I.%S')
ValueError: time data '2018.02.09_11.34.09' does not match format '%Y.%m.%d_%H.%I.%S'

What am I doing wrong?

Upvotes: 2

Views: 48

Answers (1)

heemayl
heemayl

Reputation: 41987

You need to replace the format specifier %I with %M, for minutes:

%Y.%m.%d_%H.%M.%S

%I denotes hour in 12-hour format so from (0)1..12, whereas based on your example, you have 34 as the value, which presumably is in minutes (%M).

Upvotes: 6

Related Questions