我想调查如何找到这些数字,但老实说,我一直在网上找到的答案一直困扰着我。我试图弄清楚如何获得今天开始的时间,以及最近的星期一。获取本周的星期一和今天的Python开始的UNIX时间戳
我读了time.time(),但是这给了我现在的时间。
我想调查如何找到这些数字,但老实说,我一直在网上找到的答案一直困扰着我。我试图弄清楚如何获得今天开始的时间,以及最近的星期一。获取本周的星期一和今天的Python开始的UNIX时间戳
我读了time.time(),但是这给了我现在的时间。
我倾向于使用datetime
,那么您可以很容易地将其转换为时间戳:How to convert a Python datetime object to seconds。
为了得到今天的日期,在本地时间设置为零(午夜)时间:
today = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
如果你这样做,你可能会想转换为时间戳之前的时区转换为UTC。如果您希望在UTC采用午夜:
today_utc = datetime.datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0)
现在要调整到星期一,您需要知道这一周的哪一天。轻而易举地有使用0
为周一weekday
方法,让你可以减去:
monday = today - datetime.timedelta(days=today.weekday())
像这样的东西应该让你的Unix时间戳今天午夜在您的本地时区:
today = datetime.date.today()
time.mktime((today.year, today.month, today.day, 0, 0, 0, 0, 0, 0))
这应该让你半夜在星期一,因为星期一被认为是一周中的0天:
monday = today + datetime.timedelta(days=-today.weekday())
time.mktime((monday.year, monday.month, monday.day, 0, 0, 0, 0, 0, 0))
如果mktime()无法访问给定平台上的历史时区数据库,它可能会因过去的日期而失败。便携式解决方案可以[使用基于pytz的解决方案](http://stackoverflow.com/a/32192987/4279) – jfs
在Python中获取今天开始的UNIX时间戳
请参阅How do I get the UTC time of “midnight” for a given timezone?以获取表示午夜的知晓日期时间对象。若要从该对象获得Unix时间戳,调用其.timestamp()
method.
获取本周星期一的UNIX时间戳
的代码几乎同为周一的时间戳:
from datetime import datetime, time, timedelta
import tzlocal # $ pip install tzlocal
local_timezone = tzlocal.get_localzone()
today = datetime.now(local_timezone).date()
monday = today - timedelta(today.weekday())
dt = local_timezone.localize(datetime.combine(today, time.min), is_dst=None)
unix_time = dt.timestamp()
如果您需要.timestamp()
<的实现3.3 Python版本,请参阅Converting datetime.date to UTC timestamp in Python。
你是指日期吗? –
“今天的开始”是什么意思?当地时间只是午夜,还是更复杂的东西? –
你的意思是utime(1970年的时间)? – Zohar81