Picking a font size from a window size is indeed not very convenient. Usually, starting from a template string, you use StringWidth() and increase or decrease the font size until it fits (you can do a binary search, I think).
The problem is deciding on a good template string, typically in this case I would pick something like “MMMMMMMM DDDDDDDDDD NN YYYY”, assuming that this is long enough to cover any language. Maybe everytime you show an actual date, check the StringWidth in case it’s actually longer, and reduce the font size accordingly then. It’s not perfect.
If you want something a bit more complex, testing 12 * 7 dates to have all possible day/month combinations and finding the longest one isn’t that bad, if you do it only when the window is resized and not multiple times every millisecond.