【问题标题】:Python Date and Time formatPython 日期和时间格式
【发布时间】:2020-11-21 14:00:38
【问题描述】:

我有一个以日期和时间为值的 pandas 列 - 20131019T150000。我想将这些转换为 2013 年 10 月 19 日下午 3 点。

例子-

ID   DATE         
1    20131019T150000    
2    20180202T100000    

输出应该是这样的:

ID   DATE         
1    3pm, 19th October 2013   
2    10am, 2nd February 2018   

提前致谢。

【问题讨论】:

    标签: python python-3.x date time


    【解决方案1】:

    首先,您需要将字符串转换为 Python datetime.datetime 对象以轻松使用它。为此,您可以使用 classmethod datetime.strptime(date_string, format)(参见 in docs),它返回一个与 date_string 对应的日期时间,根据格式进行解析。

    然后,要将 datetime 对象打印为您想要的任何字符串,还有另一个方法 datetime.strftime(format)(参见 in docs),它返回一个表示日期和时间的字符串,由显式格式字符串控制。

    (注意:有关格式化指令的更多信息,请关注this link 到文档)

    所以对于给定的字符串,您可以按如下方式进行:

    from datetime import datetime
    
    
    def get_suffix(day: int) -> str:
        # https://stackoverflow.com/a/739266/7771926
        if 4 <= day <= 20 or 24 <= day <= 30:
            suffix = "th"
        else:
            suffix = ["st", "nd", "rd"][day % 10 - 1]
        return suffix
    
    
    def process_date(date: str) -> str:
        dt_obj =  datetime.strptime(date, '%Y%m%dT%H%M%S')
        return dt_obj.strftime('%I%p, %d{} %B %Y').format(get_suffix(dt_obj.day))
    
    
    def main(): 
        date_str = '20131019T150000'
        print(process_date(date_str))
    
    
    if __name__ == '__main__':
        main()
    

    如果您执行脚本,控制台会打印以下内容:03PM, 19th October 2013

    如果有帮助很高兴。

    【讨论】:

    • 非常感谢!像魅力一样工作。我使用 apply() 将函数应用于 DATA 列。很有帮助。
    【解决方案2】:

    您可以使用 python 的 datetime 模块(内置)。这是一个可以执行您想要的功能:

    import datetime
    def func(input_st):
        dt_obj = datetime.datetime.strptime(input_st, '%Y%m%dT%H%M%S')
        return dt_obj.strftime('%I%p, %d %B %Y')
    

    希望这能解决它!你可以(也许)对每个项目使用这个函数......也许使用 python 的'map'内置函数。

    【讨论】:

      【解决方案3】:
      from datetime import datetime
      s="20131019T150000"
      dt_obj1=datetime.strptime(s,'%Y%m%dT%H%M%S')
      print(dt_obj1.strftime("%I %p,%d %B %Y"))
      
      Output:
      03 PM,19 October 2013
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多