Python如何检查字符串是UTC时间戳?

Posted

技术标签:

【中文标题】Python如何检查字符串是UTC时间戳?【英文标题】:Python How to check the string is a UTC timestamp? 【发布时间】:2021-05-14 08:28:52 【问题描述】:

我需要检查时间戳字符串是否属于'UTC'时间戳

我有以下代码

def time_stamp():
    utc = timezone('UTC')
    time_stamp = datetime.now(utc)
    utc_time_stmap = time_stamp.strftime("%Y-%m-%dT%H:%M:%S.%f")
    return utc_time_stmap

上述函数以字符串格式返回UTC时间

print(type(time_stamp()))
<class 'str'>

print(time_stamp())
'2021-02-10 15:49:57.906168'

“time_stamp()”返回“字符串类型”的时间戳。

#预期:

我需要检查返回值是否在严格的日期 UTC 日期范围内?

感谢您的帮助?

谢谢

【问题讨论】:

该字符串中没有时区信息。你所问的(凭空创造信息)是不可能的(至少在编程领域) 能否请您澄清一下:“utc 日期时间格式”是什么意思? ISO 8601? 2021-02-10 15:49:57.906168 这样的字符串既没有时区信息也没有 UTC 偏移量,你如何确定它是否代表 UTC? 嗨 Pranva 和 MrFuppes,我已经更新了预期的问题,我需要检查返回时间戳是当前 utc 时间戳.. 【参考方案1】:

这里有一些代码,您可以在其中找到答案。

import re
from datetime import datetime

DATETIME_ISO8601 = re.compile(
    r'^([0-9]4)' r'-' r'([0-9]1,2)' r'-' r'([0-9]1,2)' # date
    r'([T\s][0-9]1,2:[0-9]1,2:?[0-9]1,2(\.[0-9]1,6)?)?' # time
    r'((\+[0-9]2:[0-9]2)| UTC| utc)?' # zone
)

def datetime_iso(string):
    """ verify rule
    Mandatory is: 'yyyy-(m)m-(d)dT(h)h:(m)m'        
    """
    string = string.strip()
    return bool(re.fullmatch(DATETIME_ISO8601, string))

def utc_timezone(datetime_string):
    datetime_string = datetime_string.strip()
    return datetime_string.endswith("00:00") or datetime_string.upper().endswith("UTC")


check_this = ["2020-1-1 22:11", "2020-1-1 22:11:34 00:00", "2020-1-1 22:11:34+00:00", "2020-1-1 22:11+01:00", "2020-1-1 22:11 UTC", "does this help?"]

for datetime_string in check_this:
    print(".........................")
    print(f"This date time string 'datetime_string' is in datetime iso format: datetime_iso(datetime_string)")
    if datetime_iso(datetime_string):
        print(f"Is it the UTC time zone? utc_timezone(datetime_string)")

【讨论】:

以上是关于Python如何检查字符串是UTC时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何在不知道 DST 是不是生效的情况下将时区感知时间戳转换为 UTC

给定 UTC 时间戳和 UTC 偏移量,是不是可以在 Python 中获取时区?

转换为 Unix 时间时如何指定时区 (UTC)? (Python)

如何在 JavaScript 中获取 UTC 时间戳?

Python - 给定时间戳UTC和UTC偏移量的时区名称

Unix 纪元时间戳在 Python 中转换为 UTC 时区