如何编写从任意格式的字符串中检索日期的函数

问题描述

简而言之,我需要对 Python f-string 的操作进行逆向操作。

使用此格式化程序,您可以在 Python 中轻松地从包含日期的变量构建任意字符串。例如:

f"{day}-{mon}-{year}   \n {hour}:{minute}some silly\n text here_{seconds}"

其中 year 等是代表您期望的整数。

现在,我需要一个能够执行反向操作的函数,即给定一个以有趣(但已知)方式格式化的字符串,检索基础日期变量。像这样:

def retrieve_date(str_date,str_format):        
    # str_date is 27-03-2021   \n 04:11:some silly\n text here_34"
    # str_format is something like "{day}-{mon}-{year}   \n {hour}:{minute}some silly\n text here_{seconds}"

    # some logic

    # return the 6 integers that make up the time stamp  
    return year,month,day,hour,minute,second

这如何在 Python 中完成?

解决方法

如评论中所述,您可以使用 datetime.strptime。 p 代表“解析”,还有 strftime 可用于将日期格式化为特定字符串。

from datetime import datetime

str_date = "27-03-2021   \n 04:11:some silly\n text here_34"
str_format = "%d-%m-%Y   \n %H:%M:some silly\n text here_%S"

def retrieve_date(str_date,str_format):        
    d = datetime.strptime(str_date,str_format)

    return d.year,d.month,d.day,d.hour,d.minute,d.second


print(retrieve_date(str_date,str_format))

(2021,3,27,4,11,34)