【问题标题】:Convert local timestamp to unix epoch timestamp in python在python中将本地时间戳转换为unix时代时间戳
【发布时间】:2020-02-02 11:52:29
【问题描述】:

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

输入:(当地时间) 2019-11-09 10:10:10

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

【问题讨论】:

  • 没有“本地纪元时间戳”之类的东西。你认为那是什么,你是怎么得到它的?
  • 显示您的代码。
  • 添加了有问题的要求,顺便说一句我找到了解决方案

标签: python datetime timestamp unix-timestamp epoch


【解决方案1】:

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()

【讨论】:

  • 我有本地日期字符串的纪元时间戳,我想要全局日期纪元时间戳。
【解决方案2】:

我找到了解决方案

输入:(当地时间) 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"))

它解决了我的问题。

【讨论】:

  • 你太复杂了。
  • 然后给出解决方案。
【解决方案3】:

您只需在正确的时区正确解析时间字符串,然后获取其时间戳:

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() 都将相同.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2019-01-05
    • 2013-02-14
    • 1970-01-01
    • 2019-08-15
    • 2020-10-19
    • 2013-12-14
    相关资源
    最近更新 更多