使用占位符作为日期时出错

时间:2016-02-11 13:34:59

标签: python date datetime integer

我像我这样定义我的代码的日期窗口

import pandas as pd
#####
end   = datetime.datetime.now()
end   = end.date()
start = end - days * pd.tseries.offsets.BDay()
start = start.date()

并像这样使用

print('After analysing from %s to %s' %(datetime.date(start), datetime.date(end)))
print('Duration: %1.1f Years ~ %d workdays - Extent: %d strategies and %d tickers' '\n'
'The following matrix of tickers and strategies show highest potential:' %(years, days, len(strategies), len(stocklist))
)

但是我收到了错误

    print('After analysing from %s to %s' %(datetime.date(start), datetime.date(end)))

TypeError: an integer is required (got type datetime.date)

有谁知道如何正确使用日期?谢谢,我在这里的搜索没有返回任何我能理解的内容。

1 个答案:

答案 0 :(得分:1)

您的问题是尝试从datetime对象创建datetime对象(datetime.date期望接收整数年,月和日参数)。由于datetime对象知道如何将自己表示为字符串,因此您可以使用:

...'from %s ...' % start

等等。例如,

In [183]: end   = datetime.datetime.now()

In [184]: end
Out[184]: datetime.datetime(2016, 2, 11, 14, 56, 32, 77665)

In [185]: str(end)
Out[185]: '2016-02-11 14:56:32.077665'

In [186]: end.date()
Out[186]: datetime.date(2016, 2, 11)

In [188]: '%s' % end.date()
Out[188]: '2016-02-11'

或者,(如果您尚未从end中提取日期部分),则可以使用strftime

In [189]: '%s' % end.strftime('%Y-%m-%d')
Out[189]: '2016-02-11'