【问题标题】:how to convert '22-Jul-2020 14:00 (GMT 4.30) ' "22 7 2020 " in python如何在 python 中转换 '22-Jul-2020 14:00 (GMT 4.30)' "22 7 2020"
【发布时间】:2020-07-15 04:26:12
【问题描述】:

我想按顺序将22-Jul-2020 14:00 (GMT 4.30) 转换为22 7 2020 将其插入到我的数据库中。

非常感谢您的帮助。

【问题讨论】:

    标签: python python-3.x date-format


    【解决方案1】:

    你想使用strftime() and strptime()

    strptime 用于将您的日期字符串更改为datetime 格式。 strftime 然后将其转换回另一个格式化的字符串,假设这是您想要做的。

    from datetime import datetime
    
    s = '22-Jul-2020 14:00 (GMT 4.30)'
    
    dt = datetime.strptime(s, '%d-%b-%Y %H:%M (%Z 4.30)')
    
    out = dt.strftime('%d %m %Y')
    
    print(out)
    

    返回

    22 07 2020
    

    一个问题是strptime 在最后格式化偏移量(GMT 4.30)时会遇到困难。由于“GMT”一词是您检索时区所需的全部内容,因此我建议使用regex 删除其余部分 - 如果时区对您很重要。

    import re
    from datetime import datetime
    
    s = '22-Jul-2020 14:00 (GMT 4.30)'
    
    s_stripped = re.sub('\(([A-Z]+).+\)', r'\1', s)
    # s_stripped is '22-Jul-2020 14:00 GMT'
    
    dt = datetime.strptime(s_stripped, '%d-%b-%Y %H:%M %Z')
    
    out = dt.strftime('%d %m %Y')
    
    print(out)
    

    【讨论】:

    • 我认为this answer 可以帮助将月份名称转换为数字,然后使用strftime()strptime() 方法将您的日期时间对象格式化为适当的格式。
    【解决方案2】:

    如果你只想保留字符串中的日期部分,你可以使用这个:

    from datetime import datetime
    
    
    s = "22-Jul-2020 14:00 (GMT 4.30)"
    d = datetime.strptime(s.split()[0], "%d-%b-%Y")
    desired_output = '{d.day} {d.month} {d.year}'.format(d=d)
    print(desired_output)
    x = datetime.strftime(d, "%d %m %Y")
    print(x)
    

    输出:

    22 7 2020
    22 07 2020
    

    从字符串创建datetime 对象后,我展示了字符串格式和strftime 以将datetime 转换为所需的格式。如您所见,strftime 返回一个零填充月份,这对于您的情况来说不是必需的。

    参考:

    【讨论】:

      【解决方案3】:

      您可以使用正则表达式来完成,但我想在这种情况下使用replace() 方法,它将替换为以下内容:

      date = "22-Jul-2020 14:00"
      newDate = date.replace("-", " ")[:11]
      print(newDate)
      

      输出:

      22 Jul 2020
      

      了解更多关于Replace()

      Codin 快乐!

      【讨论】:

      • 你不应该使用';'在 python 行的末尾。此外,您的输出不是代码的实际输出
      • 感谢您的回答,但这不是我想要的。我想将“2020 年 7 月 22 日 14:00(格林威治标准时间 4.30)”更改为等效的“22 7 2020”。没有额外的信息和时间。
      • @TalibDaryabi,对不起,我更正了答案,请看看!感谢您的指正
      • @GeorgeBou 我喜欢使用分号(用于终止行)。不使用也不是必须的!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多