Actually, the questioner here misunderstood the meaning of mktime. Let’s take a look at the official documentation of python:
time.mktime(t) This is the inverse function of localtime(). Its argument is the struct_time or full 9-tuple (since the dst flag is needed; use -1 as the dst flag if it is unknown) which expresses the time in local time, not UTC. It returns a floating point number, for compatibility with time(). If the input value cannot be represented as a valid time, either OverflowError or ValueError will be raised (which depends on whether the invalid value is caught by Python or the underlying C libraries). The earliest date for which it can generate a time is platform-dependent.
mktime What is passed should be the local time, not the utc time, so if you want to get the timestamp of the specified utc time, the simpler method is:
Directly subtract the Unix timestamp start time, that is
now = datetime.datetime.now()
timestamp = time.mktime(now.timetuple())
Of course, there are many methods. Here are just two methods that are easier to understand. If you want to know more, here is a link for your reference: Converting datetime.date to UTC timestamp in Python
@yylucifer Well said. The main problem is timezone conversion. For your problem, you can use the following method
# 基本上相等,但是会由于计算的耗时导致无法完全相等
# time.timezone:The offset of the local (non-DST) timezone, in seconds west of UTC
time.mktime(datetime.datetime.utcnow().timetuple()) == time.time() + time.timezone
Actually, the questioner here misunderstood the meaning of
mktime
. Let’s take a look at the official documentation of python:mktime
What is passed should be the local time, not the utc time, so if you want to get the timestamp of the specified utc time, the simpler method is:Directly subtract the Unix timestamp start time, that is
Convert to local time
Of course, there are many methods. Here are just two methods that are easier to understand. If you want to know more, here is a link for your reference: Converting datetime.date to UTC timestamp in Python
@yylucifer Well said. The main problem is timezone conversion.
For your problem, you can use the following method