如何在IF语句python中检查datetime格式

如何在IF语句python中检查datetime格式,python,datetime,Python,Datetime,假设我需要检查以下两种类型的日期时间格式: %Y-%m-%dT%H:%m:%S.%f%z %Y-%m-%d 并将其转换为此格式%Y-%m-%d%H:%m:%S UTC 我的代码目前只能检查一个条件: if val is None: val2 = val else: val2 = datetime.strptime(val, '%Y-%m-%dT%H:%M:%S.%f%z').__format__("%Y-%m-%d %H:%M:%S UTC") 我的伪代码是: if

假设我需要检查以下两种类型的日期时间格式:

  • %Y-%m-%dT%H:%m:%S.%f%z
  • %Y-%m-%d
  • 并将其转换为此格式
    %Y-%m-%d%H:%m:%S UTC

    我的代码目前只能检查一个条件:

    if val is None:
      val2 = val
    else:
      val2 = datetime.strptime(val, '%Y-%m-%dT%H:%M:%S.%f%z').__format__("%Y-%m-%d %H:%M:%S UTC")
    
    我的伪代码是:

    if val is None:
       val2 = val
    elif val is in "%Y-%m-%d" format:
       do this --> val2 = convert from "%Y-%m-%d" to "%Y-%m-%d %H:%M:%S UTC" (eg: 2020-09-01 00:00:00 UTC)
    else:
       val2 = datetime.strptime(val, '%Y-%m-%dT%H:%M:%S.%f%z').__format__("%Y-%m-%d %H:%M:%S UTC")
    

    时间格式将始终是UTC的
    00:00:00
    ,因为首先没有指定时间戳。

    可能如下所示:

    if val is None:
        val2 = val
    elif len(val) == 10: 
        #"%Y-%m-%d" format
        val2 = datetime.datetime.strptime(val, "%Y-%m-%d").__format__("%Y-%m-%d %H:%M:%S UTC")
    else:
        # Assuming only %Y-%m-%dT%H:%M:%S.%f%z format is possible. 
        # If not add if condition similar to above
        val2 = datetime.strptime(val, '%Y-%m-%dT%H:%M:%S.%f%z').__format__("%Y-%m-%d %H:%M:%S UTC")
    

    这也很好。我刚刚想到了这个解决方案
    val2=val+“00:00:00 UTC”
    。不确定这是否不好,但也有效。谢谢你的帮助@用户6308605都做同样的事情。您可以选择适合自己的格式。如果您的案例中的
    %z
    表示例如
    +00:00
    (使用
    ),您可以使用-解析这两种格式,然后使用strftime转换为字符串。对我来说,这似乎更具可读性(没有条件)。