获取当天小时的时间戳

时间:2014-07-08 06:54:43

标签: python python-datetime

好的,我需要一种方法来获取当天的时间戳,但是在某个时间。

例如,我想在今天晚上7:30获取unix时间戳 - 我该怎么做才能获得该值?在PHP中,可以使用strtotime(),但我不确定如何在Python中执行此操作。

编辑:澄清一下,我的意思是当天一个静态写日。因此,如果我明天运行此脚本,它将在明天晚上7:30返回时间戳。

3 个答案:

答案 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)

重要的事情是utctimetupleutcfromtimestamp。您当然需要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>)