Seconds since epoch to relative date
我从新纪元开始就在研究日期,例如:
1 | date = 6928727.56235 |
我想把它转换成另一种相对格式,这样我就能把它转换成与时代相关的格式。
使用time.gmtime(日期),返回
1 | year=1970, mon=3, day=22, hour=4, min=38, sec=47 |
号
我认为epoch开始于‘01/01/1970 00:00:00’,所以方法应该返回相关日期,如下所示:
1 | '2 months 21 days 04:38:47' |
有什么帮助吗?
The method should return the relative
date in something like:
'2 months 22 days 04:38:47'
号
你不能这样做,因为一个月有28到31天。声明"2个月22天"可能意味着81到84天之间的任何事情。(或者在78到84天之间,如果不需要连续几个月的话)。
所以你想要的只是胡说八道。相对日期时间只能以天、小时和秒为单位计算,直到差异变得如此之大以至于天数不再重要为止,在这种情况下,您可以开始以月或年为单位计算(但这样您就不能再包括天)。
所以你可以说"5年2个月",或者"80天3小时",或者"200年"。但你不能说"两个月三天"或"五年二十天"。这些说法毫无意义。
因此,正确的答案确实是尤米罗斯。
1 | timedelta(seconds=6928727.56235) |
但现在你也知道为什么了。
(当然,除非你的月实际上是指月球周期,它的长度是固定的。:)
1 2 3 4 5 6 7 | 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) |
返回
time.gmtime返回一个parsetuple对象,您可以使用tuple的各个元素进行计算。像这样的东西
1 2 3 4 | >>> time_epoch = time.gmtime(0) >>> time_at_hand = time.gmtime(6928727.56235) >>> print"It's been %d days somewhat like %d months, %d days and %d hours, %d minutes, %d seconds" % (time_at_hand.tm_yday - time_epoch.tm_yday, time_at_hand.tm_mon - time_epoch.tm_mon , time_at_hand.tm_mday - time_epoch.tm_mday, time_at_hand.tm_hour - time_epoch.tm_hour, time_at_hand.tm_min - time_epoch.tm_min, time_at_hand.tm_sec - time_epoch.tm_sec) It's been 80 days somewhat like 2 months, 21 days and 4 hours, 38 minutes, 47 seconds |
号
与Eumiro的答案类似,但不需要除以60等——相反,使用
1 2 3 | date = 6928727.56235 import pandas as pd pd.Timestamp(datetime.fromtimestamp(date))-pd.Timestamp(datetime.fromtimestamp(0)) |
。
退货
1 | Timedelta('80 days 04:38:47.562350') |