我在太平洋标准时间。我想获得2个时间戳:
无论目前的时间如何,这些时间戳都应该相同。
我怎样才能用Python做到这一点?
我是否必须使用datetime
对象,然后将其转换为时间戳?
答案 0 :(得分:10)
要获得yesterday
我想你可以这样做:
>>>import datetime
>>>yesterday = datetime.date.today() - datetime.timedelta(1)
>>>unix_time= yesterday.strftime("%s") #Second as a decimal number [00,61] (or Unix Timestamp)
>>>print unix_time
'1372737600'
答案 1 :(得分:1)
显而易见的方法是使用datetime
。但你显然想要出于某种奇怪的原因避免这种情况。好吧,您可以使用time
或calendar
,或各种第三方库或自定义代码。
这是time
:
import time
def yesterday():
now = time.time()
yesterday = time.localtime(now - 86400) # seconds/day
start = time.struct_time((yesterday.tm_year, yesterday.tm_mon, yesterday.tm_mday,
0, 0, 0, 0, 0 yesterday.tm_isdst))
today = time.localtime(now)
end = time.struct_time((today.tm_year, today.tm_mon, today.tm_mday,
0, 0, 0, 0, 0 today.tm_isdst))
return time.mktime(start), time.mktime(end)
如果你在闰秒期间运行它,在跟踪闰秒的平台上,它将在今天而不是昨天给出。您可以轻松检查(基本上,如果今天==昨天减去另一天),但我认为这不值得。
此外,如果你在DST交叉期间在午夜和01:00或23:00(取决于你的半球)之间发生交叉的时区运行,那么它将得到错误的一天。例如,在Brazil中,如果您在2013年2月16日的第二个23:00-00:00小时内运行此代码,它将返回包含24小时前的时间的开始...这就是今天而不是昨天。同样的解决方法在这里工作。