好的,我需要一种方法来获取当天的时间戳,但是在某个时间。
例如,我想在今天晚上7:30获取unix时间戳 - 我该怎么做才能获得该值?在PHP中,可以使用strtotime(),但我不确定如何在Python中执行此操作。
编辑:澄清一下,我的意思是当天不一个静态写日。因此,如果我明天运行此脚本,它将在明天晚上7:30返回时间戳。
答案 0 :(得分:1)
from datetime import datetime
now = datetime.utcnow() # Current time
then = datetime(1970,1,1) # 0 epoch time
ts = now - then
ts = ts.days * 24 * 3600 + ts.seconds
# alternatively, per Martijn Pieters
ts = int(ts.total_seconds())
答案 1 :(得分:0)
您可以使用时间模块:
from datetime import datetime
from time import mktime
# like said Ashoka
ts = datetime.strptime("2014-7-7 7:30","%Y-%m-%d %H:%M")
#you have now your datetime object
print mktime(ts.timetuple())
# print 1404711000.0
print int(mktime(ts.timetuple()))
# print 1404711000
小心mktime不要关心时区,所以如果你想拥有一个UTC时区并仍然使用时间,请在之前转换日期:
import pytz
fr = pytz.timezone('Europe/Paris')
#localize
ts = fr.localize(ts)
#timestamp in UTC
mktime(ts.astimezone(pytz.UTC).timetuple())
答案 2 :(得分:0)
calendar.timegm方法返回超出传递时间元组的时间戳:
import calendar
from datetime import datetime
d = datetime(year=2014, month=7, day=8, hour=7, minute=30)
calendar.timegm(d.utctimetuple())
# 1404804600
datetime.utcfromtimestamp(calendar.timegm(d.utctimetuple()))
# datetime.datetime(2014, 7, 8, 7, 30)
重要的事情是utctimetuple
和utcfromtimestamp
。您当然需要UTC时间戳,而不是当地时区的时间戳。
import calendar
from datetime import datetime
from pytz import timezone, utc
tz = timezone('Europe/Warsaw')
aware = datetime(year=2014, month=7, day=8, hour=7, minute=30)
aware = tz.localize(aware)
# datetime.datetime(2014, 7, 8, 7, 30, tzinfo=<DstTzInfo 'Europe/Warsaw' CEST+2:00:00 DST>)
stamp = calendar.timegm(aware.utctimetuple())
# 1404797400
d = datetime.utcfromtimestamp(stamp)
# datetime.datetime(2014, 7, 8, 5, 30)
d = d.replace(tzinfo=utc)
d.astimezone(tz)
# datetime.datetime(2014, 7, 8, 7, 30, tzinfo=<DstTzInfo 'Europe/Warsaw' CEST+2:00:00 DST>)