Обновление: ОП уточнил вопрос, чтобы получить уникальное значение в диапазоне 1-364.В этом случае я бы преобразовал дату в Calendar
объект и вызвал бы get (Calendar.DAY_OF_YEAR)
на нем - это вернет номер дня в году, который точно соответствует ОП после того, как кажется.
Оригинальный ответ: Существует столько же способов сделать это, сколько есть битов строки.Если вы хотите использовать уникальные числа для относительного сравнения дат, то наиболее очевидным решением является то, что в любом случае делает большинство компьютеров, а именно - преобразование даты в некоторый наименьший общий знаменатель, например, количество секунд в определенной эпохе.Java предоставляет способы сделать это с классами Date
и Calendar
.Если вы заботитесь только о днях и месяцах, вы можете достичь того же с int v = (month * 120) + day
.Если вас не интересуют сравнения и вы просто хотите получить уникальное значение, вы можете создать дайджест даты, используя какой-то алгоритм хеширования.В Java вы можете, например, взять String
представление даты и вызвать hashCode()
для нее.