将epoch/unix时间转换为可读格式

2024-04-19 15:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中如果我在哪里做呢

import time
print(time.time()+40)

从现在起,它将给epoch/unix 40秒的时间,但是,我要怎么做呢

^{pr2}$

现在,如果你得到比60秒(1分钟)更高的数字,并且在大范围内,比如一年,会让人很困惑,有没有一种方法可以让它用一个简单的方法把它变成分钟或小时、天、年,这样它就能返回这样的值吗?在

return "That time is %s years from now %s days %s hours %s minutes and %s seconds from now"

我可以想出一种方法来实现它,但我担心我这样做会导致使用大量if/else和divmod的非常大的代码。提前谢谢。在


Tags: 方法fromimportreturnthattimeis时间
3条回答

这几乎就是我停止使用时间并开始使用datetime的同一个地方。在

from datetime import tzinfo, timedelta, datetime
now = datetime.utcnow()
later = now - timedelta(seconds=40)


>>> now
datetime.datetime(2013, 10, 7, 15, 9, 5, 903000)
>>> print now
2013-10-07 15:09:05.903000
>>> print later
2013-10-07 15:08:25.903000

所以现在你可以减去差了。在

^{pr2}$

不幸的是,datetime不能将天转换成月/年。我想这是因为它必须用闰年来计算,以及这两个日期之间的月份。在

>>> print diff
546 days, 1:27:08





额外信息:

如果您开始进入其他时区,它会变得更复杂,因为您需要提供一个时区对象。下面是一个简单的版本:

################################################################################
#Class definition for EST timezone since python doesn't have one
class EST(tzinfo):
    def utcoffset(self, dt):
        return timedelta(-5)

    def tzname(self, dt):
        return "EST"

    def dst(self, dt):
        return timedelta(0)

################################################################################
#Class definition for CST timezone since python doesn't have one
class CST(tzinfo):
    def utcoffset(self, dt):
        return timedelta(hours=-6)

    def tzname(self, dt):
        return "CST"

    def dst(self, dt):
        return timedelta(0)


nowcst = datetime.now(tz=CST())
nowest = now.replace(tzinfo(EST())

使用时区确实应该考虑夏时制。
*示例代码可以在python文档中找到-http://docs.python.org/2/library/datetime.html#tzinfo-objects

一般来说,time.time()返回的值不需要difference()函数,因为减法运算符就是这样做的。在

t0 = time.time()
# ...
t_later = time.time()

elapsed = t_later - t0

is there a method to have it turn it into minutes or hours,days,years in a simple method so it can return something like this

是的,time.strftime是这种方法: http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

它还将考虑区域设置和系统配置的时区以将其打印出来。在

要使用datetime模块来处理日期/时间:

from datetime import datetime, timedelta
td = timedelta(seconds=520)
out = td.__str__()
print out

(doc)

相关问题 更多 >