将utc时间添加到文件名python

时间:2011-12-12 09:44:51

标签: python string datetime

如何以UTC时间获取当前时间(Zulu样式为小时和分钟:0100Z),并将其添加到字符串中以便我可以连接它

这让我无法连接字符串:

import datetime
utc_datetime = datetime.datetime.utcnow()
utc_datetime.strftime("%Y-%m-%d-%H%MZ") //Result: '2011-12-12-0939Z'
filename = '/SomeDirectory/AnotherDirectory/FilePrefix_'+utc_datetime+'.txt'

这给了我另一个文件名字符串:

//返回:/ SomeDirectory / AnotherDirectory / FilePrefix_2011-12-12 09:42:15.374022.txt

import datetime
utc_datetime = datetime.datetime.utcnow()
utc_datetime.strftime("%Y-%m-%d-%H%MZ") //Result: '2011-12-12-0939Z'
filename = '/SomeDirectory/AnotherDirectory/FilePrefix_'+str(utc_datetime)+'.txt' 

提前致谢

3 个答案:

答案 0 :(得分:4)

你想做的可能是:

import datetime
utc_datetime = datetime.datetime.utcnow()
formated_string = utc_datetime.strftime("%Y-%m-%d-%H%MZ") //Result: '2011-12-12-0939Z'
filename = '/SomeDirectory/AnotherDirectory/FilePrefix_%s.txt'% formated_string

或以单行方式:

filename = '/SomeDirectory/AnotherDirectory/FilePrefix_%s.txt'%datetime.datetime.utcnow().strftime("%Y-%m-%d-%H%MZ")

使用datetime.strftime时,它会返回根据需要格式化的字符串,但不会修改日期时间对象。

编辑:使用%s代替+,感谢Danilo Bargen

答案 1 :(得分:1)

datetime对象的strftime方法只返回一个值,但不操作原始对象。您需要将结果保存到变量本身或新变量中。

import datetime
utc_datetime = datetime.datetime.utcnow().strftime("%Y-%m-%d-%H%MZ")
utc_datetime //Result: '2011-12-12-0939Z'

此外,由于performance reasons,您不应使用+来连接多个字符串。请改用:

filename = '/directory/prefix_%s.txt' % utc_datetime

答案 2 :(得分:0)

您需要将utc_datetime.strftime()的结果保存到变量中:

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> s=utc_datetime.strftime("%Y-%m-%d-%H%MZ")
>>> filename = '/SomeDirectory/AnotherDirectory/FilePrefix_' + s + '.txt'
>>> print filename
/SomeDirectory/AnotherDirectory/FilePrefix_2011-12-12-0946Z.txt
>>> 

您当前正在计算一个值并丢弃字符串结果。