0
A
回答
0
import datetime
import pytz
import dateutil
t = "2016-05-24 11:30 PST"
#Convert the timestamp to a datetime object with timezone information
d = pytz.timezone("PST8PDT").localize(dateutil.parser.parse(t))
#In order to subtract a datetime object with timezone information is required.
#Build the epoch datetime object with a timezone
epoch = pytz.timezone("UTC").localize(datetime.datetime.utcfromtimestamp(0))
#Subtract the epoch from the human enocoded datetime object
(d - epoch).total_seconds() * 1000
2
考慮以下幾點:
import datetime as DT
import dateutil.parser as DP
import pytz
t = "2016-05-24 11:30 PST"
date = DP.parse(t)
DATE_FORMAT = '%Y-%m-%d %H:%M:%S %Z%z'
wrong_tzone = pytz.timezone('PST8PDT')
wrong_date = wrong_tzone.localize(date)
print('{:16}: {}'.format(str(wrong_tzone), wrong_date.strftime(DATE_FORMAT)))
# PST8PDT : 2016-05-24 11:30:00 PDT-0700
right_tzone = pytz.timezone('Pacific/Pitcairn')
right_date = right_tzone.localize(date)
print('{:16}: {}'.format(str(right_tzone), right_date.strftime(DATE_FORMAT)))
# Pacific/Pitcairn: 2016-05-24 11:30:00 PST-0800
這表明本地時間2016-05-24 11:30
在 縮寫的Pacific/Pitcairn
時區,但縮寫在PST8PDT
PDT
。 因此,使用PST8PDT
時區來定位2016-05-24 11:30
是沒有意義的。
選擇正確的時區影響時間戳:
In [274]: wrong_date.timestamp()
Out[274]: 1464114600.0
In [275]: right_date.timestamp()
Out[275]: 1464118200.0
(呼叫d.timestamp()
,順便說一句,is equivalent to (d - epoch).total_seconds()
)。 時間戳以秒爲單位返回一個數量。
的Pacific/Pitcairn
時區使用
import datetime as DT
import dateutil.parser as DP
import pytz
import collections
t = "2016-05-24 11:30 PST"
date = DP.parse(t)
tzones = collections.defaultdict(set)
for name in pytz.all_timezones:
tzone = pytz.timezone(name)
tzabbrev = tzone.normalize(tzone.localize(date)).tzname()
tzones[tzabbrev].add(name)
print(tzones['PST'])
# {'Pacific/Pitcairn'}
我們是幸運的,只有一個在本地時間2016-05-24 11:30
使用簡稱PST時區中。一般來說,許多時區可能與 相關聯的同一縮寫。例如,2016-05-24 11:30 CST
可以指 這些時區中的任何:
In [283]: tzones['CST']
Out[283]:
{'America/Belize',
'America/Costa_Rica',
'America/El_Salvador',
'America/Guatemala',
'America/Managua',
'America/Regina',
'America/Swift_Current',
'America/Tegucigalpa',
'Asia/Chongqing',
'Asia/Chungking',
'Asia/Harbin',
'Asia/Macao',
'Asia/Macau',
'Asia/Shanghai',
'Asia/Taipei',
'Canada/East-Saskatchewan',
'Canada/Saskatchewan',
'PRC',
'ROC'}
2016-05-24 11:30 CST
是模糊的。所以一般來說,你正在尋找的時間戳可能沒有一個獨特的解決方案(或任何解決方案)。
相關問題
- 1. 將時間從毫秒轉換爲人類可讀的日期
- 2. 將時間戳轉換爲毫秒 - MATLAB
- 3. 如何在毫秒中將時間戳轉換爲毫秒
- 4. 是否可以使用Python將時間戳轉換爲毫秒?
- 5. Python的 - 從劃時代的時間轉換成秒人類可讀的時間
- 6. 如何將unix時間戳轉換爲人類可讀時間?
- 7. 轉換毫秒到人類可讀的時間流逝
- 8. 將時間轉換爲秒+毫秒秒
- 9. 將以毫秒爲單位的unix時間戳轉換爲postgres可讀的時間戳
- 10. 將毫秒轉換爲Java中的時間戳
- 11. Hive:如何轉換毫秒時間戳?
- 12. 轉換時間爲毫秒?
- 13. 在Python中將字符串時間戳轉換爲秒或毫秒
- 14. 精度爲毫秒的Python時間戳
- 15. 將微秒時間戳轉換爲Python中的日期時間
- 16. 在javascript中將時間戳轉換爲毫秒
- 17. 將unix時間戳轉換爲mysql中的人類可讀時間
- 18. 將zip文件時間戳轉換爲人類可讀格式
- 19. 將微秒轉換爲人類可讀時間
- 20. 從UNIX時間戳(以毫秒爲單位)轉換爲Python中的HH:MM:SS
- 21. 將時間戳轉換爲自世紀以來的毫秒數
- 22. 在毫秒中將毫秒轉換爲日期時間
- 23. 將毫秒轉換爲時間
- 24. 將毫秒轉換爲時間碼
- 25. 將毫秒轉換爲日期/時間
- 26. SQL將時間轉換爲毫秒
- 27. 將時間變量轉換爲毫秒
- 28. Haskell將時間毫秒轉換爲UTCTime
- 29. 將給定時間轉換爲毫秒
- 30. 將時間戳轉換爲MS Access中的人可讀
我絕對同意。我提出的解決方案取決於時區,並不是所有時區的通用解決方案。 – 0111001101110000