Python:从纪元到相对日期的秒数

Gab*_*ira 7 python time epoch

我从epoch开始使用日期,并且已经有了,例如:

date = 6928727.56235
Run Code Online (Sandbox Code Playgroud)

我想将其转换为另一种相对格式,以便我能够将其转换为相对于纪元的内容.

使用time.gmtime(date),它返回

year=1970, mon=3, day=22, hour=4, min=38, sec=47
Run Code Online (Sandbox Code Playgroud)

我认为epoch开始于'01/01/1970 00:00:00',所以该方法应该返回相对日期,例如:

'2 months 21 days 04:38:47'
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

Len*_*bro 5

该方法应以如下方式返回相对日期:“ 2个月22天04:38:47”

您不能这样做,因为一个月的长度在28到31天之间。声明“ 2个月22天”可能意味着81到84天之间的任何时间。(或者,如果不必连续几个月,则在78到84天之间)。

因此,您想要的只是荒谬的。相对日期时间只能以天,小时和秒为单位进行计数,直到相差变得如此之大以至于天数不再重要为止,在这种情况下,您可以开始以月或年为单位进行计数(但是您不能包括天数)不再)。

因此,您可以说“五年零两个月”或“ 80天零三个小时”或“两百年”。但是您不能说“两个月零三天”或“五年零二十天”。这些说法完全没有道理。

因此,正确的答案的确是eumiros

timedelta(seconds=6928727.56235)
Run Code Online (Sandbox Code Playgroud)

但是现在你也知道为什么了。

(当然,除非你每月实际平均月亮周期,这样做有一个固定长度。:))


eum*_*iro 4

from datetime import timedelta

a = timedelta(seconds=6928727.56235)

# a is now datetime.timedelta(80, 16727, 562350)

print "%d days %02d:%02d:%02d" % (a.days, a.seconds / 3600, (a.seconds / 60) % 60, a.seconds % 60)
Run Code Online (Sandbox Code Playgroud)

返回80 days 04:38:47,这是正确的,但不完全是OP想要的(80天而不是2个月21天)。