我有一个看起来像的字符串:
dt_string='some_prefix/%Y-%m-%d/%H:%M/some_postfix'
我想用当前日期和时间格式化此字符串,以使其看起来像'some_prefix/2016-06-28/10:00/some_postfix'
但我的问题是日期模式可能并不总是在%Y-%m-%d/%H:%M
。它可以是%m-%d-%Y/%H:%M
之类的东西。我查看了datetime.datetime.strptime
,但它将格式作为输入。在我的情况下,格式不固定。是否有一个函数可以从输入字符串动态确定日期时间格式?或者我应该编写逻辑确定格式,然后使用datetime.datetime.strptime
?
答案 0 :(得分:5)
你可以使用time.strftime方法
import time
time.strftime("stuff/%d-%m-%y/%H:%M/stuff")
参考资料可以在http://www.cyberciti.biz/faq/howto-get-current-date-time-in-python/
找到答案 1 :(得分:2)
from datetime import datetime
dt1 = 'some_prefix/%Y-%m-%d/%H:%M/some_postfix'
dt2 = 'some_prefix/%m-%d-%Y/%H:%M/some_postfix'
def fill_date(dt_str):
d = datetime.now()
filled = dt_str.replace('%Y', str(d.year))\
.replace('%m', str(d.month))\
.replace('%d', str(d.day))\
.replace('%H', str(d.hour))\
.replace('%M', str(d.minute))
return filled
print(fill_date(dt1))
> 'some_prefix/2016-6-28/13:41/some_postfix'
print(fill(date(dt2))
> 'some_prefix/6-28-2016/13:42/some_postfix'
这应该适用于所有情况,只要它们使用相同的%命名约定。如果一个字符串恰好缺少其中一个字段(例如,可能没有时间,只有日期),它也会不会介意,或者如果有秒出现,你可以在替换链上添加秒。