I'm going to create an app where users can select a date and time and then say they want to be reminded repeatedly, e.g. every month at that day of month.

However, I'm not sure how to handle/show dates that do not exist in certain months like the 31st day.

Suppose a user selects 31st of March and a monthly repeating reminder. Now in April there are only 30 days. I would remind the user at the 30th of April (supposing he wants the last day of the month) but still remember that initially he wanted the 31st, so in May the reminder would be shown again at the 31st of May.

As I would always display the next date the user will be reminded, during April, I would display the Reminder as 30th of April but would display below Repeat every month on day 31, but I'm afraid that's a bit confusing. On the other hand, I do not know how else to display this.

Any ideas or suggestions would be very welcome.

  • 1
    This is a well known UX problem which has lots of precedents. Have you checked out recurring reminder interfaces on Google Calendar, Outlook, Sunrise, and the hundreds of alarm and calendar apps out there? That would be a better way to start (you would effectively be looking at the results of hundreds of dedicated design processes including some of the best UX designers in the industry at Google ).
    – tohster
    Commented Mar 23, 2015 at 18:23
  • @tohster, thank you. you're absolutely right.I tested it with Google Calendar and strangely enough it seems to just skip months not having a 31st day. I would not have thought that a possibility.
    – Ridcully
    Commented Mar 23, 2015 at 19:05
  • sometimes corner-cases like 31st-day are so intricate to manage that a naive/literal approach (e.g. just check if there's a 31st) may test best, especially when there is a low probablity that users will use this case. Personally I would just provide a fade-in or slide-down warning message for users that some months will be skipped if they choose the 31st, rather than provide a lot of alternatives, but it depends on your app.
    – tohster
    Commented Mar 23, 2015 at 19:16
  • If the user selects 31st of the month and sets the reminder for every month, then I would suggest to remind him/her at the last day of each month. Eg; 28th of February, 30th April, 31st May etc.
    – Ades
    Commented Jul 22, 2015 at 9:00

5 Answers 5


What's the user's goal?

Clearly, the design is intending to let the user set a recurring monthly reminder. At least, that's clearly the intent on the 1st through the 30th of the month.

Would it be wrong to simply round down any number that exceeds the number of days in a given month? That is consistent with the intent.

Because, seriously, I can't think of a reasonable scenario in which a user would want to be reminded ONLY if the month has a 31st day, precisely because that behaviour is so radically different from reminders set for the 1st through the 30th day of the month.

Ditto for the 29th and 30th in February. Just round down to the number of days in the month. Because the opposite: asking extra questions about February if the reminder is for the 29th or 30th is about bothering users.

Just make it simple for users.

This business of extra questions in case of the 31st is taking logic to its programmatic extreme, rather than considering what users want and need. Consider the two worst-case scenarios:

  • Getting a reminder a day early in a short month.
  • Getting a reminder you didn't need in a short month.

Neither of these causes harm. In contrast, getting NO month-end reminder in February April, June, September and November makes the software highly unreliable.


Usualy, software supports two sub-patterns for the monthly reccurence pattern:

  • based on the day of the month (1 - 31)
  • two descriptive fields

You want to use the first sub-pattern but users would create more unambiguous reminder for the last day of the month with the second. The second sub-pattern should consist of two list values, first having options like "first", "second", "third", "fourth", "last", and the second list having options like "Day", "Weekday", "Weekend day" and all seven day names.

Monthly Reminder

So, if someone wants a reminder on the last day of the month, he/she would select "Last" and "Day". A label saying "of every month" or similar completes a very readable sentence. If you want to allow users to set a reminder to every second, third etc. month, you can extend the reminder with the third option, like on the picture above.

However, if you support only the first sub-pattern, you should inform users immediately with the message saying that the occurrence will fall on the last day of the month for some months if they set a value greater than 28.

For the label, which you will display below the actual reminder, you could say "Repeat every month on day 31 or on the last day of the month" or something like that. For the value 31 I don't see any obstacles for transforming the label to the "Repeat every month on the last day of the month" but you cannot do this for values < 31.

  • 1
    This may be too complex an interface for a mobile app. Also please note that there are first through fourth or fifth Mondays through Sundays in a month, but there are much more of days, weekdays and weekend days, although only the first or last ones are of interest for most reminders (e.g. ultimo in banking jargon). Since there are several methods of counting weeks per month (or year) any more sophisticated UI is a minefield.
    – Crissov
    Commented Jul 22, 2015 at 9:21

Maybe you can derive some guidance from the reminders your users will need - ask them. The generic solution (described by Tomaž Tekavec) seems to complex for a mobile design, so you need to know more about the problem space to find a simple solution.

For example, I can imagine a reminder I set on 29, to be given two days notice for something that I need to do before end of month. If the app moves this reminder to Feb 28th, I'll be in trouble.

Maybe an alternative is not to use 1-31, but 1-5 days from beginning-of-month and 5-1 days before end-of-month?


Interesting question, I would recommend you to give users a link that is being followed by an action which represents the next due and also the ability to edit the payment day (Than action can be a slider, another page, a hover or pop-up action and etc.). In that way they always can make sure about the next payment and also they can apply any changes if they found a mistake in their setup.


Is this a mobile app? If not, one solution that works well is natural language parsing.

If you can support it, letting the user type "every other monday" or "on the last day of every month" is an elegant solution. Of course, this much typing is not ideal on small touch screens.

I have seen a calendar where, if the user selects the 30th or 31st, it prompts "repeat on the last day of the month?" with a check box.

  • It was for a mobile app. Otherwise, your suggestion is good from an UX point of view, but as for implementation it would be extremly tricky (even more so with multiple languages) and could get quite annoying for the user if the system does not understand what she wants.
    – Ridcully
    Commented May 22, 2015 at 20:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.