我有一个字符串表示unix时间戳(即。"1284101485"),我想把它转换成一个可读的日期。当我利用时间的时候。strftime,我得到一个TypeError:
>>>import time
>>>print time.strftime("%B %d %Y", "1284101485")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument must be 9-item sequence, not str
请注意,utcfromtimestamp可能会导致意想不到的结果,因为它返回一个朴素的datetime对象。Python将naive datetime视为本地时间——而UNIX时间指的是UTC。
可以通过在fromtimestamp中设置tz参数来避免这种歧义:
from datetime import datetime, timezone
dtobj = datetime.fromtimestamp(1284101485, timezone.utc)
>>> print(repr(dtobj))
datetime.datetime(2010, 9, 10, 6, 51, 25, tzinfo=datetime.timezone.utc)
现在你可以格式化为字符串,例如,符合ISO8601的格式:
>>> print(dtobj.isoformat(timespec='milliseconds').replace('+00:00', 'Z'))
2010-09-10T06:51:25.000Z
你可以像这样转换当前时间
t=datetime.fromtimestamp(time.time())
t.strftime('%Y-%m-%d')
'2012-03-07'
将字符串中的日期转换为不同的格式。
import datetime,time
def createDateObject(str_date,strFormat="%Y-%m-%d"):
timeStamp = time.mktime(time.strptime(str_date,strFormat))
return datetime.datetime.fromtimestamp(timeStamp)
def FormatDate(objectDate,strFormat="%Y-%m-%d"):
return objectDate.strftime(strFormat)
Usage
=====
o=createDateObject('2013-03-03')
print FormatDate(o,'%d-%m-%Y')
Output 03-03-2013
在Python 3.6+中:
import datetime
timestamp = 1642445213
value = datetime.datetime.fromtimestamp(timestamp)
print(f"{value:%Y-%m-%d %H:%M:%S}")
输出(本地时间)
2022-01-17 20:46:53
解释
第1行:导入datetime库。
第2行:Unix时间,从1970-01-01开始,单位是秒。
第3行:将其转换为unix时间对象,检查:type(value)
第4行:打印与strp相同的格式。当地时间。要以UTC打印,请参阅下面的示例。
奖金
要将日期保存为字符串,然后打印它,使用以下命令:
my_date = f"{value:%Y-%m-%d %H:%M:%S}"
print(my_date)
以UTC格式输出:
value = datetime.datetime.fromtimestamp(timestamp, tz=datetime.timezone.utc)
# 2022-01-17 18:50:52