我有一个字符串表示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

当前回答

对于来自UNIX时间戳的人类可读时间戳,我以前在脚本中使用过:

import os, datetime

datetime.datetime.fromtimestamp(float(os.path.getmtime("FILE"))).strftime("%B %d, %Y")

输出:

“2012年12月26日”

其他回答

>>> import time
>>> time.ctime(int("1284101485"))
'Fri Sep 10 16:51:25 2010'
>>> time.strftime("%D %H:%M", time.localtime(int("1284101485")))
'09/10/10 16:51'

对于来自UNIX时间戳的人类可读时间戳,我以前在脚本中使用过:

import os, datetime

datetime.datetime.fromtimestamp(float(os.path.getmtime("FILE"))).strftime("%B %d, %Y")

输出:

“2012年12月26日”

除了使用time/datetime包,还可以使用pandas来解决相同的问题。下面是如何使用pandas将时间戳转换为可读日期:

时间戳可以有两种格式:

13位(毫秒)- 要将毫秒转换为日期,请使用: 进口熊猫 result_ms = pandas.to_datetime(' 1493530261000 ',单位=“女士”) str (result_ms) 输出:'2017-04-30 05:31:01' 10位数(秒)- 要将秒转换为日期,请使用: 进口熊猫 result_s = pandas.to_datetime(' 1493530261 ',单位= ' s ') str (result_s) 输出:'2017-04-30 05:31:01'

如果你正在使用一个数据帧,并且不希望系列不能转换为类int错误。使用下面的代码。

new_df= pd.to_datetime(df_new['time'], unit='s')

在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