我有一个知道datetime
对象:
dt = datetime.datetime.now(pytz.timezone('Asia/Ho_Chi_Minh'))
我使用它将对象转换为时间戳,目前运行正常:
int(time.mktime(dt.utctimetuple()))
但根据time docs,time.mktime
需要本地timetuple
,而非UTC timetuple
。如何从知道timetuple
获取本地datetime
?或者是使用timestamp
代替time.mktime
的任何其他方法吗?
我已阅读此问题,似乎我应该使用calendar.timegm(dt.utctimetuple())
。
Converting datetime to unix timestamp
答案 0 :(得分:1)
如果你有一个知道的日期时间,你可以通过减去UTC世纪的日期时间将其转换为unix纪元时间戳,如:
import datetime as dt
import pytz
def aware_to_epoch(aware):
# get a datetime that is equal to epoch in UTC
utc_at_epoch = pytz.timezone('UTC').localize(dt.datetime(1970, 1, 1))
# return the number of seconds since epoch
return (aware - utc_at_epoch).total_seconds()
aware = dt.datetime.now(pytz.timezone('Asia/Ho_Chi_Minh'))
print(aware_to_epoch(aware))
1521612302.341014
答案 1 :(得分:-1)
似乎你对你想要的东西感到困惑。
根据您的评论,答案在python datetime
文档中:
没有方法直接从表示UTC时间的天真日期时间实例获取POSIX时间戳。如果您的应用程序使用此约定并且您的系统时区未设置为UTC,则可以通过提供tzinfo = timezone.utc来获取POSIX时间戳:
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
或直接计算时间戳:
timestamp =(dt - datetime(1970,1,1))/ timedelta(seconds = 1)