编写一个python脚本,每天在给定时间生成一个时间戳(unix历元值)

编写一个python脚本,每天在给定时间生成一个时间戳(unix历元值),python,timestamp,Python,Timestamp,我想写一个小python,它需要每天生成一个简单精确的时间戳。脚本将在每天的特定时间运行,比如说下午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 print ts 这很好,但我想通过现在的时

我想写一个小python,它需要每天生成一个简单精确的时间戳。脚本将在每天的特定时间运行,比如说下午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
print ts
这很好,但我想通过现在的时间_字段,我每天的基础上。如何执行此操作?

shell中的date命令也为我们提供了纪元时间

date +%s
因此,将python脚本编写为

import subprocess
p = subprocess.Popen(['date', '+%s'], stdout=subprocess.PIPE,stderr=subprocess.PIPE)
out, err = p.communicate()
print out
然后每天使用您现在使用的相同逻辑调用它。

您可以使用time.mktime函数:

>>> import datetime
>>> import time
>>> dt = datetime.datetime.today().replace(hour=13, minute=0, second=0, microsecond=0)
>>> print(dt)
2016-04-06 13:00:00
>>> time.mktime(dt.timetuple())
1459944000.0
如果需要了解时区,请使用了解时区的datetime的utctimetuple方法和time.gmtime函数


编辑以显示如何为特定时间创建datetime.datetime来生成对应于1pm的POSIX时间戳:

#!/usr/bin/env python
import time

unix_time = time.mktime(time.localtime()[:3] + (13, 0, 0) + (-1,)*3)
如果您的Python版本中没有此选项,则很容易为时区感知的datetime对象(如one_pm:

如果下午1点没有DST转换,并且mktime在给定平台上使用了正确的时区定义,则要获取对应于下午1点的Unix时间:

#!/usr/bin/env python
import time

unix_time = time.mktime(time.localtime()[:3] + (13, 0, 0) + (-1,)*3)

我不太清楚你想做什么。什么是时间字段?现在是日期和时间。ts=现在-然后是自那时起的持续时间。。。你到底想要什么?我的最终结果应该是一个时间戳,必须在每天下午1点生成。因为上面的代码给出了当前时间,所以我需要一天中某个特定时间的时间戳。有什么问题吗?哪个shell?哪个操作系统?日期+%s为我提供了当前数据,,我想要特定时间的数据,请阅读问题您可以随时运行它,就像您在上午8点运行它一样,但您需要下午1点的历元@PythonFreakyeah,我想硬编码这个..时间部分很好,但是脚本需要每天运行,所以我想动态地从中提取数据部分system@PythonFreak您想使用今天13:00的日期时间?是的。。确切地今天+13:00@PythonFreak:注:给定的本地时间可能不明确,甚至不存在,例如在DST转换期间。此外,如果mktime无法访问给定平台上的历史tz数据库,并且取决于脚本运行的时间,mktime可能会在某些平台上对给定日期/时间使用错误的时区定义。你可以
#!/usr/bin/env python
import time

unix_time = time.mktime(time.localtime()[:3] + (13, 0, 0) + (-1,)*3)