我有一个字符串,表示在 Python 中,unix 时间戳 (例如"1284101485"),并且希望将其转换为可读的日期。在使用time.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
2010-09-10 06:56:58
问题评论:

回答:

使用datetime模块︰

import datetime
print(
    datetime.datetime.fromtimestamp(
        int("1284101485")
    ).strftime('%Y-%m-%d %H:%M:%S')
)

在此代码中datetime.datetime可以看起来很陌生,但第一个datetime模块名和第二个是类名。因此datetime.datetime.fromtimestamp()是类的fromtimestamp() datetimedatetime模块中方法。

.fromtimestamp()可能失败为过去的日期,如果本地时区具有不同的 utc 偏移量。您需要历史时区数据库如提供的pytz模块 (或您的操作系统)。或只是工作以 utc 格式,并使用.utcfromtimestamp().

这是当地时间吗?它需要使用阐明如果是格林威治标准时间还是本地时间。

>>> from datetime import datetime
>>> datetime.fromtimestamp(1172969203.1)
datetime.datetime(2007, 3, 4, 0, 46, 43, 100000)

来自http://seehuhn.de/pages/pdate

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

time.ctime()time.localtime()可能会失败的过去日期如果本地时区具有不同的 utc 偏移量。您需要历史时区数据库如提供的pytz模块 (或您的操作系统)。或只是以 utc 格式的工作,并使用time.gmtime()datetime可能会提供更大的日期范围,因此datetime.utcfromtimestamp()可以使用而不是time的函数。

对于 UNIX 时间戳的人工可读时间戳,我曾经用这之前的脚本︰

import os, datetime

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

输出︰

2012 2012年 12 月 26日日"

为什么是这下投票一次?如果您向下已进行投票,您至少应该解释为什么您会向下投票选择出正确答案吗?

我编辑,添加的清晰度。我用它,仍然使用这段代码打印清晰的时间戳。

谁再次 downvoted?评论并说明而不是 appart 的问题。

我的猜测︰ 它将不添加到已演示接受答案︰ .fromtimestamp().strftime()的方法。注︰ getmtime()已经返回浮点数。

另一 downvote?如果您要转到 downvote,至少说出为什么。

您可以将转换这样的当前时间

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
请输入您的翻译

Converting unix timestamp string to readable date in Python

确认取消