Я предполагаю, что вы не хотите использовать java.util.Date
или его замену java.time.LocalDate , вероятно, потому что это назначение.
Сравнение этих чисел можно сделатьпутем преобразования каждого компонента в int
и последующего использования Integer.compare
для каждого компонента из года в день:
В псевдокоде это будет означать:
For each component in [Year, Month, Day]:
n = compare(date1[component], date2[component])
if n != 0 then
return n
return 0 // all component are equals.
несколько способов обработки, чтобы получить компоненты в массив int, где Year = 0, Month = 1 и Day = 2 представляют индекс каждого компонента в указанном массиве.
Вы можете преобразовать весь String
в массив int[]
.Если вы знаете формат, использование Pattern
(см. Примечание) (например, Pattern.compile("^(?<DAY>\d+)-(?<MONTH>\d+-(?<YEAR>\d+)$")
), вероятно, является самым простым для проверки String
, следуя некоторому заданному формату.Он также позволяет извлекать компонент (используя matcher.group("DAY")
и т. Д.).
Сравнение String
как числа можно выполнить двумя способами:
- Получайте удовольствиес цифрами.
- Используйте
Integer.parseInt(String)
.
Поскольку вам, вероятно, следует проверять диапазон компонентов (каждый месяц от 1 до 12, дни от 1 до 31 [или в зависимости отmonth], ...), преобразование в int будет самым простым.
Примечание: для назначения, не использующего java.util.Date
, но допускающего Pattern
, вероятно, будет контрпродуктивным.