fantasycalendar / obsidian-fantasy-calendar

MIT License
176 stars 8 forks source link

Intercalary Leap Days #12

Closed FajiProject closed 2 years ago

FajiProject commented 2 years ago

Mandatory praise: this plug-in is awesome! Well done.

Now we can move on to me complaining about nitty details...


The calendar I made up should have a leap day that is not part of any month nor any week.

There doesn't seem to be such an option, but I figured out a workaround: make a special intercalary month just for that day.

I "solved" this by shortening the previous month by 1 week and then having the intercalary month be 1-week long. I just imagine those days are actually in the previous month - not ideal but no big problem.

So it behaves neither like a regular day (because the next month isn't shifted) nor like an intercalary day (because the next year is shifted).

FajiProject commented 2 years ago

This calendar shows the shifting. Note how a shift occurs in month Y in a year following one with a leap day.

    {
      "name": "Temp",
      "description": null,
      "id": "ID_7bca180b39a8",
      "static": {
        "incrementDay": false,
        "firstWeekDay": 0,
        "overflow": true,
        "weekdays": [
          {
            "type": "day",
            "name": "a",
            "id": "ID_69daf98bf819"
          },
          {
            "type": "day",
            "name": "b",
            "id": "ID_cb0918fadad9"
          },
          {
            "type": "day",
            "name": "c",
            "id": "ID_8a48abdbea99"
          }
        ],
        "months": [
          {
            "type": "intercalary",
            "name": "X",
            "length": 6,
            "id": "ID_eba8a9ebd859"
          },
          {
            "type": "month",
            "name": "Y",
            "length": 6,
            "id": "ID_6a08e86a9b49"
          },
          {
            "type": "month",
            "name": "Z",
            "length": 6,
            "id": "ID_3be8e8f96adb"
          }
        ],
        "moons": [],
        "displayMoons": true,
        "leapDays": [
          {
            "id": "ID_a80a9a299a3b",
            "name": "Leap Day",
            "interval": [
              {
                "interval": 2,
                "exclusive": false,
                "ignore": false
              }
            ],
            "intercalary": false,
            "timespan": 0,
            "offset": 0,
            "type": "leapday"
          }
        ],
        "eras": []
      },
      "current": {
        "year": 1,
        "month": 0,
        "day": 1
      },
      "events": [],
      "categories": []
    }
FajiProject commented 2 years ago

The line "intercalary": false is interesting. I tried manually changing it to true but it seems to have no effect.

valentine195 commented 2 years ago

There is some data being saved that is for future enhancements (such as intercalary leap days :) ).

Thanks for sending over the calendar data though. That will be a big help! I will take a look as soon as I get a chance.

229c9cf0 commented 2 years ago

For reference, this also applies to the Discordian calendar. (All months have exactly 73 days, all weeks have exactly 5 days, for a 365 day year, just split more regularly than our calendar.) The leap day appears exactly where Feb 29 would be (in exactly the same years), so it's between Chaos 59 and 60, not affecting normal week day numbering. So the workaround of adding an extra month doesn't work.

Further, if I import a calendar where I put a holiday onto this intercalary, it will instead end up on the first of the containing month.

valentine195 commented 2 years ago

Hi, intercalary leap days are supported in the version 2.0 build. This build will be released to the public soon.