2011-10-05 58 views
1

这里使用的时间()不搞清楚这个错误是我的代码:我可以在Python

# Given an Unix timestamp in milliseconds (ts), return a human-readable date and time (hrdt) 
def parseTS(ts): 
    hrdt = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.time(int(ts)/1000)) 
    return str(hrdt) 

我收到此错误:

TypeError: time() takes no arguments (1 given) 

UPDATE:

这工作:

hrdt = datetime.datetime.fromtimestamp(int(ts)//1000) 
return hrdt 
+2

鸡蛋里挑骨头:'INT(TS)/ 1000'是做地板师过时的方式。使用'ts // 1000'来确保你的代码在未来的Python版本中能够正常工作。 –

回答

4

time.time(int(ts)/ 1000)函数是错误的。

尝试使用time.ctime,time.gtime()或time.localtime()函数来实现您想要的功能。

Python Docs (Time)

+0

虽然我不想改变时区。我想要按照UTC/GMT格式来表示时间戳。其中哪些不会根据系统的本地时间设置更改时间戳? – Dan

+0

time.ctime()然后。没有地区信息用于转换时间 – sweetfa

+0

谢谢,我试过,但不断收到各种错误。出于某种原因,ctime需要一个9位数的时间戳,但unix会给出10位数的时间戳。所以我结束了上面的修改。 – Dan

0

正如错误所说,time.time()不带任何参数,它只是将当前时间作为浮点返回。也许你在考虑time.ctime()?

+0

虽然我不想更改时区。我想要按照UTC/GMT格式来表示时间戳。其中哪些不会根据系统的本地时间设置更改时间戳? – Dan

+0

我正在给它传递一个时间戳。 – Dan

0

问题是这样的:

time.time(int(ts)/1000) 

和(因为错误是告诉你),time() takes no arguments。如果你想没有浮点部分的秒数

int(time.time()/1000) 

或者只是int(time.time())

目前还不清楚你想要做什么,但也许你想要的。

+0

我传递给它一个时间戳。不过,我不想改变时区。我想要按照UTC/GMT格式来表示时间戳。其中哪些不会根据系统的本地时间设置更改时间戳? – Dan