首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AttributeError:'str‘对象在python中没有属性'strftime’

AttributeError:'str‘对象在python中没有属性'strftime’
EN

Stack Overflow用户
提问于 2021-10-29 05:18:42
回答 2查看 5.2K关注 0票数 1

我需要运行一个脚本,在这个脚本中,我必须在代码中的几个字段中更改一天的日期,但是我很难让脚本单独获得当天的日期,它只能手动获得以下格式的日期:

代码语言:javascript
运行
AI代码解释
复制
import datetime as date  

Data_inicio = dt.date(2020,3, 1) #Ano, mês, Dia #here
Data_Fim =    dt.date(2021,10,29)

我试着用这种方式修改代码:

代码语言:javascript
运行
AI代码解释
复制
import datetime as date  

data = date.datetime.now()
data_today = data.strftime("%Y,%m,%d")
Data_inicio = dt.date(2020,3, 1) 
Data_Fim = dt.date(data_today) 

代码语言:javascript
运行
AI代码解释
复制
Data_Fim = data_today 

以下错误发生在data_fim

代码语言:javascript
运行
AI代码解释
复制
files=glob.glob(url+'/*'+Data_inicio.strftime("%d%b%Y")+'-'+Data_Fim.strftime("%d%b%Y")+'.txt')
files_inativos =glob.glob(url_inativos+'/*'+ '.txt')
files = files + files_inativos


AttributeError: 'str' object has no attribute 'strftime'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-29 05:45:36

似乎唯一需要的是将“结束日期”变量设置为data_today,而不是将其设置为datetime对象,而不是字符串。问题是,您正试图直接从字符串中执行此操作,但是字符串没有用于日期和时间转换的方法。为了使用这些,您可以使用datetime.strptime(),例如:

代码语言:javascript
运行
AI代码解释
复制
from datetime import datetime 

date_today = datetime.today().strftime("%Y, %m, %d")
start_date = datetime(2020, 3, 1)
end_date = datetime.strptime(date_today, "%Y, %m, %d")

这将为“今天”(命名为date_today)创建一个字符串,为开始日期(名为start_date)创建一个datetime对象,然后创建一个实际从现有字符串解析的结束日期变量(end_date)。具体来说,在本例中,这个字符串是我们刚刚创建的字符串(date_today)。

请注意,这个示例主要有教学目的,因为从datetime创建一个“今天”字符串,然后将其解析回一个datetime对象是没有什么意义的。如果要从其他地方获取end_date,那么解析date_today就更有意义了,但是使用已知的格式,在这种情况下,您可以将其解析为datetime对象并使用它。但是,在相同的上下文中,您并没有真正使用字符串表示形式“don”。

如果是在相同的上下文中定义它们,那么可能根本不需要2个变量,而且只能使用datetime对象。每当您需要打印它或将其显示为字符串时,您都可以将其格式化为特定的输出。例如:

代码语言:javascript
运行
AI代码解释
复制
from datetime import datetime 

start_date = datetime(2020, 3, 1)
end_date = datetime.today()

print(end_date.strftime("%Y, %m, %d"))
>>> 2021, 10, 29

注意,如果您正在处理日期和时间,那么只使用datetime对象并在需要输出字符串时格式化它们通常是一种更好的方法。节省了大量的工作和来回格式-解析-格式-解析的东西。此外,它还使您能够利用时间三角洲

票数 1
EN

Stack Overflow用户

发布于 2021-10-29 07:52:23

看起来您正在创建一个datetime对象,然后很难提取该对象的一部分(仅是date部分)。您可以通过实例化datedatetime对象并提取您想要的属性来解决这个问题:

代码语言:javascript
运行
AI代码解释
复制
import datetime

# Using date objects
start_date = datetime.date(year=2020, month=3, day=1)
end_date = datetime.date.today()

# Using datetime objects (will include hours, minutes, seconds...)
start_date = datetime.datetime(year=2020, month=3, day=1)
end_date = datetime.datetime.today()

# You can format either object with the `.strftime()` method
date_now = datetime.date.today()
datetime_now = datetime.date.today()

for dt in [date_now, datetime_now]:
    # format and print
    print(dt.strftime('%Y,%m,%d'))
    
    # Or access the attributes directly
    print([dt.year, dt.month, dt.day])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69769576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文