【问题标题】:How to remove the additional time-zone added information from datetime string如何从日期时间字符串中删除附加的时区添加信息
【发布时间】:2019-07-30 11:27:21
【问题描述】:

愚蠢的问题,但找不到正确的答案。 我使用 dateutils 将我的 datetime 对象从 UTC 转换为 ist。

utc = datetime.utcnow()
UTC = tz.gettz('UTC')
indian = tz.gettz('Asia/Kolkata')
ind = utc.replace(tzinfo=UTC)
ind.astimezone(indian).replace(microsecond=0).__str__()

输出

'2019-07-30 16:32:04+05:30'

我想删除 +5:30 部分,我该怎么做,除了在“+”符号上拆分字符串,或者我如何避免一开始就添加它。

【问题讨论】:

标签: python python-3.x python-2.7 datetime


【解决方案1】:

您可以通过strftime明确说明您的格式

>>> new = ind.astimezone(indian).replace(microsecond=0)
>>> new.strftime('%Y %m %d %H:%M:%S')
'2019 07 30 16:59:56'

【讨论】:

    【解决方案2】:

    您可以使用tzinfo=None 简单地从日期时间对象中删除时区。字符串表示仍将是 ISO8601,但没有时区偏移部分。

    str(
       datetime.now(tz=tz.gettz('Asia/Kolkata')))
       .replace(microseconds=0, tzinfo=None)
    )
    # '2019-07-30 16:32:04'
    

    【讨论】:

    • 你确定吗?无论如何,我通过使用特定时区直接调用 datetime.now 而不是使用 utcnow 来简化我的答案。
    • 抱歉——我错过了一个事实(在您的原始答案中)您使用的是 utcnow 而不是 now
    猜你喜欢
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2010-10-25
    • 2015-04-15
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多