【问题标题】:How to move the year one day ahead in Python如何在 Python 中将一年提前一天
【发布时间】:2020-03-10 09:27:27
【问题描述】:

我的问题是将一年提前一天,所以我的计算从一年的第一天开始,最好是星期一。它可以忽略前一天,例如,如果 1 月 1 日是星期日,它可以忽略它并将星期一推为第一天。我实施的逻辑是只获取星期一的数据,例如一周的第一天。


X=[]
Y=[]
for item in data['Elements']:
    for sub_item in item['TimeSpans']:
        if (item['Date'].startswith("2017")):
            iso_day = datetime.datetime.strptime(item['Date'], '%Y-%m-%dT%H:%M:%S').isocalendar()       #Moving Date Logic
            if (iso_day[2] == 1):
                X.append(iso_day)
                Y.append(sub_item['Value'])

我怎样才能让它每天都显示,而不是只在这个星期一显示,同时牢记我的上述年度问题? if 语句中的条件使其仅从星期一开始。我如何操纵该语句,使其最初从星期一开始,然后在从星期一开始时也推出其他日期的数据。

我的json是这样的:

{
    "SpotKey": "79",
    "SpotName": "ELIX",
    "Denomination": "eur/mwh",
    "Elements": [
      {
        "Date": "2017-01-01T00:00:00",
        "Base": 36.8696,
        "Peak": 36.0125,
        "TimeSpans": [
          {
            "TimeSpan": "00:00-01:00",
            "Value": 46.43
          },
          {
            "TimeSpan": "01:00-02:00",
            "Value": 42.43
          }
        ]
      },
      {
        "Date": "2017-01-02T00:00:00",
        "Base": 53.7413,
        "Peak": 63.0317,
        "TimeSpans": [
          {
            "TimeSpan": "00:00-01:00",
            "Value": 41.18
          },
          {
            "TimeSpan": "01:00-02:00",
            "Value": 37.34
          }
        ]
      }
    ]
}

【问题讨论】:

  • 检查 dateutil - 它可以进行诸如“从 x 开始的下一个星期一”、“每月的第 3 个星期一”等计算。
  • 你的意思是像this

标签: python datetime


【解决方案1】:

我想你可以找到一年中的第一个星期一和一年中的最后一天。然后将json中的每一天与这些天进行比较。

类似:

import datetime 
qyear = 2017
first_day = datetime.datetime(qyear, 1, 1)
if (first_day.weekday() == 6):
    first_day = datetime.datetime(qyear, 1, 2)
last_day = datetime.datetime(qyear, 12, 31)
if (iso_day >= first_day and  iso_day <= last_day):

【讨论】:

  • 我不确定我是否理解您的意思。能否请您详细说明一下?
  • 我想我误解了你的问题。你到底想得到什么?你想从你的 json 中获取每年第一个星期一的数据吗?忽略所有其他数据?
  • 我想要从星期一开始的数据,包括所有其他日期直到年底(包括所有其他日期)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多