'str' object has no attribute 'strftime'

发布时间 2023-09-13 15:27:48作者: joudys

错误原因:

该错误通常出现Pyhton的日期和时间格式化的过程中,因为strftime是将日期格式化输出的函数,该函数属于datetime库中datetime类的函数。出现该错误的原因是:变量是字符串类型的日期,而字符串类型是没有strftime函数的。

解决方法:

如果你想要对一个字符串类型的日期时间进行格式化处理,首先需要将它转化为日期时间类型的变量,否者就出'str' object has no attribute 'strftime'错误出现。将一个字符串类型的日期转换为日期时间对象一般有两种方法,一种是通过datetime包,另一种是使用dateutil包。

  • 方法一:使用datetime模块中的strptime函数将字符串类型的日期转换为日期时间对象,然后再使用strftime函数进行时间格式化处理。例如:

    from datetime import datetime
    
    if __name__ == '__main__':
    	str_date = '2023-09-13T05:43:39.523000Z'
    	# 输出str_date的类型
    	print(type(str_date))  # <class 'str'>
    	date_parse = datetime.strptime(str_date, '%Y-%m-%dT%H:%M:%S.%fZ')
    	# 输出date_parse的类型
    	print(type(date_parse))# <class 'datetime.datetime'>
    	print(date_parse)    # 2023-09-13 05:43:39.523000
    	date_format = date_parse.strftime('%Y%m%d%H%M%S')
    	# 输出date_format的类型
    	print(type(date_format)) # <class 'str'>
    	print(date_format)# 20230913054339
    
  • 方式二:使用Python中的dateutil包,这个包可以识别大部分常见的日期格式,通过包中parser类的parse方法,将字符串类型的日期转换为日期时间对象。例如:

    from dateutil import parser
    
    if __name__ == '__main__':
        str_date = '2023-09-13T05:43:39.523000Z'
        # 输出str_date的类型
        print(type(str_date)) # <class 'str'>
        date_parse = parser.parse(str_date)
        # 输出date_parse的类型
        print(type(date_parse)) # <class 'datetime.datetime'>
        print(date_parse) # 2023-09-13 05:43:39.523000+00:00
        date_format = date_parse.strftime('%Y%m%d%H%M%S')
        # 输出date_format的类型
        print(type(date_format)) # <class 'str'>
        print(date_format) # 20230913054339