【问题标题】:Formatting "yesterday's" date in python在python中格式化“昨天的”日期
【发布时间】:2010-12-15 06:56:39
【问题描述】:

我需要在 Python 中以 MMDDYY 这种格式查找“昨天”日期。

例如,今天的日期可以这样表示: 111009

我今天可以很容易地做到这一点,但在“昨天”我很难自动做到这一点。

【问题讨论】:

    标签: python datetime date


    【解决方案1】:

    使用datetime.timedelta()

    >>> from datetime import date, timedelta
    >>> yesterday = date.today() - timedelta(days=1)
    >>> yesterday.strftime('%m%d%y')
    '110909'
    

    【讨论】:

    • 如果你恰好在使用 pandas,你也可以使用:print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))
    • 如果你碰巧搜索选项,你也可以使用 Pendulum (pendulum.eustace.io): pendulum.now().subtract(days=-1).strftime('%m%d% y')
    【解决方案2】:
    from datetime import datetime, timedelta
    
    yesterday = datetime.now() - timedelta(days=1)
    yesterday.strftime('%m%d%y')
    

    【讨论】:

      【解决方案3】:

      这应该做你想做的:

      import datetime
      yesterday = datetime.datetime.now() - datetime.timedelta(days = 1)
      print yesterday.strftime("%m%d%y")
      

      【讨论】:

      • 为什么你更关心人们在 UTC 偏移量 0 中的日期而不是系统本地时区中的日期?
      • 我从我的代码中复制了它,在数据库使用中你经常关心 UTC。删除了 UTC 的东西。
      【解决方案4】:

      所有答案都是正确的,但我想提一下时间增量接受否定论点

      >>> from datetime import date, timedelta
      >>> yesterday = date.today() + timedelta(days=-1)
      >>> print(yesterday.strftime('%m%d%y')) #for python2 remove parentheses 
      

      【讨论】:

        【解决方案5】:

        我可以让它更国际化一些,并根据国际标准而不是在美国常见的奇怪的月-日-年格式化日期吗?

        from datetime import datetime, timedelta
        
        yesterday = datetime.now() - timedelta(days=1)
        yesterday.strftime('%Y-%m-%d')
        

        【讨论】:

        • 同意我们在美国使用一种奇怪的日期格式,但 OP 特别要求这种奇怪的格式——在这种情况下是 `'%m%d%y'。
        • @DaveL17,公平点。我会把答案留给所有偶然发现这个问题的美国以外的人。
        【解决方案6】:

        扩展Chris给出的答案

        如果您想以特定格式将日期存储在变量中,据我所知这是最短且最有效的方法

        >>> from datetime import date, timedelta                   
        >>> yesterday = (date.today() - timedelta(days=1)).strftime('%m%d%y')
        >>> yesterday
        '020817'
        

        如果你想要它作为一个整数(这可能很有用)

        >>> yesterday = int((date.today() - timedelta(days=1)).strftime('%m%d%y'))
        >>> yesterday
        20817
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-05
          • 2023-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多