使用日期时间填充python字符串,格式为字符串

时间:2016-06-28 17:22:06

标签: python

我有一个看起来像的字符串:

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

2 个答案:

答案 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'

这应该适用于所有情况,只要它们使用相同的%命名约定。如果一个字符串恰好缺少其中一个字段(例如,可能没有时间,只有日期),它也会不会介意,或者如果有秒出现,你可以在替换链上添加秒。