Если длина составляет четыре символа, проанализируйте как Year
.
Year y = Year.parse( input ) ;
Как вы хотите представить это как момент?Возможно, в первый момент первого дня года в UTC?
LocalDate ld = y.atDay( 1 ) ;
Instant instant = ld.atStartOfDay( ZoneOffset.UTC ).toInstant() ;
Под «меткой времени Unix» вы подразумевали количество миллисекунд с первого момента 1970 года в UTC?
long millis = instant.toEpochMilli() ;
Если длина ввода 10 символов, выполните синтаксический анализ LocalDate
.
LocalDate ld = LocalDate.parse( input ) ;
Выполните те же действия, что и выше.
long millis = ld.atStartOfDay( ZoneOffset.UTC ).toInstant().toEpochMilli() ;
Соберите все это вместе.
switch ( input.length() ) {
case 4 : return Year.parse( input ).atDay( 1 ).atStartOfDay( ZoneOffset.UTC ).toInstant().toEpochMilli() ;
case 10 : return LocalDate.parse( input ).atStartOfDay( ZoneOffset.UTC ).toInstant().toEpochMilli() ;
default : … throw exception, unexpected input.
}