Вы могли бы использовать класс Date и жестко установить год в високосный год (чтобы вы могли представлять 2/29, если хотите). Это было бы удобно, если бы вам нужно было выполнить «дистанционные» вычисления между двумя датами (при условии, что вам не нужно переносить границы года и что вам не нужны однодневные ответы, полученные при пересечение 2/29 неправильно в течение нескольких лет).
Это также может быть удобно, поскольку вы можете использовать #strftime
для отображения даты как (например) «3 марта», если хотите.
Однако, в зависимости от использования, я думаю, что я, вероятно, представлял бы их явно, либо в парном массиве, либо как-то вроде YearlessDate = Struct.new(:month,:day)
. Таким образом, вы не будете склонны делать ошибки, подобные упомянутым выше.
Однако у меня никогда не было свидания, которое на самом деле не было связано с годом. Если предположить, что это так, то ответ @ SeanHill - лучший: сохраняйте информацию о году, но не отображайте ее пользователю, когда она не подходит.