Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 长日期时间的时间戳_Python_Datetime_Time_Timedelta - Fatal编程技术网

Python 长日期时间的时间戳

Python 长日期时间的时间戳,python,datetime,time,timedelta,Python,Datetime,Time,Timedelta,我有一个函数,它将时间戳转换为datetime对象,该对象表示:;“今天晚上10:56”或“昨天凌晨1:06”或其他 我现在有一些问题 otherdate = 1504246379 now = time.time() if otherdate: dt = now - otherdate offset = dt.seconds + (dt.days * 60 * 60 * 24) if offset: delta_s = offset % 60 offset /=

我有一个函数,它将时间戳转换为datetime对象,该对象表示:;“今天晚上10:56”或“昨天凌晨1:06”或其他

我现在有一些问题

otherdate = 1504246379
now = time.time()
if otherdate:
    dt = now - otherdate
    offset = dt.seconds + (dt.days * 60 * 60 * 24)
if offset:
    delta_s = offset % 60
    offset /= 60
    delta_m = offset % 60
    offset /= 60
    delta_h = offset % 24
    offset /= 24
    delta_d = offset
else:
    raise ValueError("Must supply otherdate or offset (from now)")
if delta_d > 1:
    if delta_d > 6:
        date = now + timedelta(days=-delta_d, hours=-delta_h, minutes=-delta_m)
        return date.strftime('%A, %Y %B %m, %H:%I')
    else:
        wday = now + timedelta(days=-delta_d)
        return wday.strftime('%A')
if delta_d == 1:
    return "Yesterday"
if delta_h > 0:
    return "%dh%dm ago" % (delta_h, delta_m)
if delta_m > 0:
    return "%dm%ds ago" % (delta_m, delta_s)
else:
    return "%ds ago" % delta_s
我当前收到的错误是:

Traceback (most recent call last):
File "test.py", line 69, in <module>
date = get_long_date(timestamp)
File "test.py", line 40, in get_long_date
offset = dt.seconds + (dt.days * 60 * 60 * 24)
AttributeError: 'float' object has no attribute 'seconds'
这清除了错误,但是如果我打印delta_d(天偏移量),它是一个负数。。。有人能帮我完成我的任务吗

谢谢,


Denis Angell

dt=now-otherdate
将返回一个
float
,而不是
datetime
timedelta
对象,
dt.day
等将因此失败


模块
datetime
包含类方法
datetime.utcfromtimestamp(timestamp)
,它很可能完成您想要实现的转换。查看Python文档中的类库…

dt
在您的代码中,由于要减去两种浮点类型,因此类型为
float

>>> type(dt)
<type 'float'>
此外,您可能希望尝试
natural
库来减少代码

pip安装自然

检查文件

你可以用一条直线直接找到向前或向后的三角洲

from natural import date
import time
>>> otherdate = 1504246379
>>> date.day(time.time() - otherdate)
'January 13'
>>> date.day(time.time() + otherdate)
'May 14'
>>> 

希望有帮助。

您真的需要自己实现解析日期时间功能,还是可以使用其他库?我建议你尽快实现自己,因为如果你想以正确的方式实现它,它并不是那么简单。问题是,你有推荐的库吗?一个可以根据偏移时间给我一个输出的单位?其他日期=1504246379的单位是多少,以秒为单位?@Anil_M是的,以秒为单位
dt = timedelta(seconds=dt)
from natural import date
import time
>>> otherdate = 1504246379
>>> date.day(time.time() - otherdate)
'January 13'
>>> date.day(time.time() + otherdate)
'May 14'
>>>