在python中将本地时间戳转换为unix纪元时间戳



我有以下格式的日期字符串(在输入中给出(当地亚洲/加尔各答时区(GMT+05:30(我想将其转换为GMT时区并找到该字符串的纪元时间戳。

输入: (本地时间(2019-11-09

10:10:10输出: (格林威治标准时间(1573274410

Python 3.3+

import pytz 
import datetime
dt = datetime.datetime.strptime('2019-09-30 09:00', '%Y-%m-%d %H:%M')
ts = pytz.utc.localize(dt).timestamp()

您需要做的就是在正确的时区中正确解析时间字符串,然后获取其时间戳:

from pytz import timezone
from datetime import datetime
calcutta = timezone('Asia/Calcutta')
naive_ts = datetime.strptime('2019-11-09 10:10:10', '%Y-%m-%d %H:%M:%S')
local_ts = calcutta.localize(naive_ts)
epoch_ts = local_ts.timestamp()

或者作为单行:

timezone('Asia/Calcutta').localize(datetime.strptime('2019-11-09 10:10:10', '%Y-%m-%d %H:%M:%S')).timestamp()

"GMT"在这里无关紧要,UNIX 纪元.timestamp()与时区无关。你可以做local_ts.timestamp()local_ts.astimezone(pytz.utc).timestamp(),它们都会产生相同的数字,因为它们都表示完全相同的时间点(只是在地球上的不同位置(。您需要做的就是将表示为 YYYY-MM-DD HH:MM:SS 的时间戳转换为感知(包括时区(datetime对象,然后无论您将其转换为哪个时区,其.timestamp()都将相同。

我找到了解决方案

输入:(本地时间(2019-11-09

10:10:10输出:(格林威治标准时间(1573274410

import calender
import time
from dateTime import dateTime
LocalTime = "2019-11-09 10:10:10"
GmtTime = datetime.fromtimestamp(LocalTime, timezone('Asia/Calcutta').strftime("%Y-%m-%d %H:%M:%S")
GmtTimeStamp = calendar.timegm(time.strptime(str(GmtTime), "%Y-%m-%d %H:%M:%S"))

它解决了我的问题。

最新更新