我正在尝试编写代码来确定下一个交易日(每4天一次)。能够从一个市场日期打印市场日列表。如果我在一天运行代码不是市场日,则列表将不正确,因为它只会增加4天。但是我需要代码才能在下一个市场日打印。例如,最后一个市场日是29/5/17,下一个应该是2/6/17 我是否需要创建包含日期列表的文件并进行比较?
import datetime
today = datetime.date.today()
year = int(input('Enter a year: '))
month = int(input('Enter a month: '))
day = int(input('Enter a day: '))
date2 = datetime.date(year, month, day)
mday = datetime.timedelta(days=4)
print('Market days till ',date2)
while today <= date2:
mtoday = (today.strftime('\nNext Market day: %A, %B %d, %Y'))
print (mtoday)
today = today + mday
答案 0 :(得分:0)
有两个简单的解决方案,但每个人都涉及更改输入参数(如果这是可以接受的)。
第一个解决方案。 将输入视为上一个交易市场日。 那你的解决方案就可以了。
第二种解决方案。 将日期时间与day_delta_since_last_market_day
一起使用您可以使用此delta并将其添加到&#34; datetime&#34;在加入4天之前。
答案 1 :(得分:0)
import datetime
today = datetime.date.today()
date2 = datetime.date(2016, 5, 26) #a reference of a passed market day
mday = datetime.timedelta(days=4)
a=date2
while a<today:
a=a+mday
print a
如果市场参考日是(2016年,5,26),那么今天的下一个市场日将是:
>>> print a
2017-06-01
答案 2 :(得分:0)
如果您只需要到下一个交易日的日期和下一个交易日的日期,这应该可以解决问题:
from datetime import date, timedelta
first_market_day = date(year=2017, month=5, day=29)
market_day_period = timedelta(days=4)
def is_market_day(value):
if value >= first_market_day:
if (value-first_market_day).days % market_day_period.days == 0:
return True
return False
def next_market_day(value):
if value >= first_market_day:
days_past_last = timedelta(days=(value-first_market_day).days % market_day_period.days)
return value + timedelta(days=4) - days_past_last
else:
return first_market_day
答案 3 :(得分:0)
您需要一个参考市场日,并不重要哪一天,只是您知道市场发生的一天,之后只是计算问题。
<div id="wrapper">
<section>
<h2>Give width of tile</h2>
<input id=width type="number" />
<h2>Give height of tile</h2>
<input id=height type="number" />
<h2>Price of one tile</h2>
<input id=price type="number" />
</section>
<section>
<h2>Surface</h2>
<input id="surface" type="number" />
<button id="calculate">Calculate</button>
</section>
<section>
<p>The price is:</p>
<div id="result">
</div>
</section>
</div>