Programming Challenge: Mini Calendar Display

Bauke
2023-05-30T11:41:45Z

It has been a while since the last time we did something like a programming challenge, so here's one for ya.

The life story of the author before you get to the recipe

I've been working on a little "today" website, showing what day it is, if it's a significant date for holiday/independence/... reasons, and one of the things I wanted was a small calendar display that showed the full month and days in each week. Like how XFCE's Clock plugin does it.

So I got to figuring it out and after finishing it up I thought this could be a nice little programming challenge. It has one input (the date) that can be in any of the rows and columns, and it's up to you to figure out all the rest.

Here's how mine looks in about 250ish lines of TypeScript (TSX technically) and SCSS.

The Recipe

Make a mini calendar display that shows all the days of the current month and at least one day of each adjacent month. So for example for May 2023: the 31 days in May, the 30th of April and the 1st of June should at least be visible.

It can be in any language with any method of rendering; simple text, TUI/GUI toolkit, web-based, raytraced in some game engine, nixie tubes, whatever.

Bonus Points

Highlight the current day name in the first row, if you're including day names.

Highlight the current day number, wherever it is.

Highlight the current week row, wherever it is.

Differentiate the days of current month and the days of the other adjacent months, wherever they are.

Some Tips

The week number

If your programming language of choice doesn't have a built-in way to get the week number, like JavaScript doesn't, this website may have you covered.

Testing

Make sure to test multiple different input dates, I thought I was finished with my display until I tried some other dates and noticed that there were still some bugs left to squash.

Starting

If you know what the first day in the calendar should be, counting up is as easy as "one two three"!

Weeks

If you use 6 weeks in the display, you will always have enough space to fit all the current month's days and the minimum 1 day of the adjacent month's too.

Showcase

If at all possible and with at least a few entries I will try to run all the submissions myself and create a little showcase website for it.

Comments URL: https://tildes.net/~comp/15l9/programming_challenge_mini_calendar_display

Votes: 16

Comments: 12