在python中如果我去哪里
import time
print(time.time()+40)
从现在起40秒后它会给出epoch / unix时间,但是,我怎么能这样做呢
import time
def difference(x):
Time = time.time()+x
difference = Time-time.time()
return difference
现在,我的工作效果很好,直到你获得的数字高于60秒(一分钟),并且大规模的一年就会变得非常混乱,有没有办法让它变成几分钟或几小时,几天,一个简单的方法,所以它可以返回这样的东西?
return "That time is %s years from now %s days %s hours %s minutes and %s seconds from now"
我可以想办法做到这一点,但我担心我这样做的方式会导致使用很多if / else和divmod的非常大的代码。提前谢谢。
答案 0 :(得分: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
所以现在你可以减去差异。
now = datetime.utcnow()
later = now + timedelta(weeks=78, minutes=85, seconds=128)
diff = later - now
不幸的是,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 docs中找到 - http://docs.python.org/2/library/datetime.html#tzinfo-objects
答案 1 :(得分:0)
通常,time.time()
返回的值不需要像您所示的difference()
函数,因为减法运算符就是这样。
t0 = time.time()
# ...
t_later = time.time()
elapsed = t_later - t0
有一种方法可以让它在一个简单的方法中将它变成几分钟或几小时,几天,几年,这样就可以返回类似这样的东西
是的,time.strftime
就是这种方法:
http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
它还会考虑区域设置和系统配置的时区来打印出来。
答案 2 :(得分:0)
要处理日期/时间,您需要使用datetime
模块:
from datetime import datetime, timedelta
td = timedelta(seconds=520)
out = td.__str__()
print out