确定下一个工作日

时间:2017-05-30 12:46:22

标签: python

我正在尝试编写代码来确定下一个交易日(每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

4 个答案:

答案 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>