【问题标题】:Reformatting Dates Python重新格式化日期 Python
【发布时间】:2013-07-01 16:22:10
【问题描述】:

我有一个文件,其中包含几种不同格式的日期,并试图在 Python 中将它们全部转换为 YYYYMMDD 格式。大多数日期采用以下格式:

格林威治标准时间 2013 年 7 月 1 日星期一 16:33:59

我不知道如何让他们进入

20130701

如果这是一个非常简单的问题,我深表歉意---我对 python 有点陌生

编辑:我正在尝试在任何给定日期执行此操作。我以 7 月 1 日为例,回想起来,我好像在问一个不同的问题。所以我想我正在寻找既能找到日期又能重新格式化它们的东西

【问题讨论】:

    标签: python date web-scraping reformat reformatting


    【解决方案1】:

    使用python-dateutil library:

    from dateutil import parser
    
    dtobject = parser.parse(datestring)
    

    datutil.parser.parse() 方法可识别多种日期格式,并返回 datetime.datetime() object。

    如果您想再次将结果格式化为(统一)字符串,请使用datetime.strftime() method:

    dtobject.strftime('%Y%m%d')
    

    演示:

    >>> from dateutil import parser
    >>> parser.parse('Mon, 01 Jul 2013 16:33:59 GMT')
    datetime.datetime(2013, 7, 1, 16, 33, 59, tzinfo=tzlocal())
    >>> parser.parse('Mon, 01 Jul 2013 16:33:59 GMT').strftime('%Y%m%d')
    '20130701'
    

    【讨论】:

    • 是否可以对任何给定日期执行此操作(而不是选择特定日期)?
    • @user2479483:我不确定我是否关注你;我演示了它如何与特定日期(您在帖子中给我们的那个日期)一起工作,但它适用于您扔给它的大多数日期格式。只需传递一个字符串变量即可。
    • 好的,让我澄清一下。我拥有的文件有数百个日期,因此使用该方法完成整个事情会很乏味。有没有办法找到所有日期并以比单独浏览每个日期更优雅的方式更改所有日期格式?
    【解决方案2】:

    这也可以通过以下方式实现:

    import datetime
    x = 'Mon, 01 Jul 2013 16:33:59 GMT'
    ''.join(str(datetime.datetime.strptime(x, '%a, %d %b %Y  %H:%M:%S %Z').date()).split('-'))
    

    如果您的日期字符串中引入了任何其他参数,您可以包含指令。例如 %p 是 Locale 中 AM 或 PM 的等价物。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-22
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多