python中將datetime對象轉化為時間戳


從mongodb中讀取出來的記錄中,時間存儲在datetime對象里,返回給客戶端的卻要求是時間戳格式,因此需要將對應的datetime時間轉化為時間戳,從stackoverflow上找到同樣的問題和詳盡的答案:

https://stackoverflow.com/questions/8777753/converting-datetime-date-to-utc-timestamp-in-python

如下以2012年12月12日12分12秒為例,求其時間戳

1,如果是Python3.3及以上版本:

可以直接調用新函數: datetime.timestamp:

>>> dt = datetime.datetime(2012, 12, 12, 12, 12, 12)
>>> dt.replace(tzinfo=datetime.timezone.utc).timestamp()
1355314332.0

第一種方法必須指定tzinfo為utc時區,否則計算時會將當前時區(中國為UTC+8)和UTC的時間差換算后計算時間戳,導致得出的timestamp比UTC要快或者慢 n*3600秒(比如為中國時區則會慢8*3600s)  

2,如果是Python3<Python3.3之間的版本:

>>> ep = datetime.datetime(1970, 1, 1)
>>> dt = datetime.datetime(2012, 12, 12, 12, 12, 12)
>>> (dt - ep)/datetime.timedelta(seconds=1)
1355314332.0

3,如果是Python2:

>>> ep = datetime.datetime(1970, 1, 1)
>>> dt = datetime.datetime(2012, 12, 12, 12, 12, 12)
>>> (dt - ep).total_seconds()
1355314332.0

 第2、3種方法的原理,其實就是直接拿記錄時間的datetime對象,減去代表1970年1月1日0時0分0秒(此時刻時間戳為0)的datetime,得到一個timedelta,再將其換算成秒數即為時間戳,只要保證ep和dt位於一個時區,計算結果就會相同,因而不需要特別指定utc時區。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM