Pergunta

Quais são os valores máximos e mínimos de um gregorianCalendar?

Eles estão em uma constante como inteira.max_value, ou talvez gregoriancalendar.get (blá)?

Em poucas palavras, como posso criar uma instância de GregoriaNendar com o valor min/max?

Foi útil?

Solução

Isso deve funcionar:

GregorianCalendar maxgc = new GregorianCalendar();
maxgc.setTime(new Date(Long.MAX_VALUE));

GregorianCalendar mingc = new GregorianCalendar();
mingc.setTime(new Date(Long.MIN_VALUE));

Outras dicas

Eu peguei a sugestão de Joekutner e a corri com:

GregorianCalendar gCal = new GregorianCalendar( );

gCal.setTime(new Date(Long.MIN_VALUE));
System.out.println( "Min Date is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));

gCal.set( Calendar.SECOND, 3 );
System.out.println( "Min Date less 1 second is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));

gCal.setTime(new Date(Long.MAX_VALUE));
System.out.println( "Max Date is " + gCal.getTime() + " " + gCal.get(Calendar.ERA));


Min Date is Sun Dec 02 16:47:04 GMT 292269055 0
Min Date less 1 second is Sun Aug 17 07:12:54 GMT 292278994 1
Max Date is Sun Aug 17 07:12:55 GMT 292278994 1

Que mostra o mínimo e o máximo, e entre eles uma indicação do que acontece se você tentar passar para o segundo antes do mínimo - você envolve.

Esta foi a versão 1.6.0_17.


Você pode tentar ligar Calendar.getminimum () Para cada tipo de campo (ou seja, ano, mês etc.) e defina esses valores mínimos nos tipos de campo correspondentes. Isso lhe daria o calendário mínimo. Não sei se há uma maneira mais rápida de fazer isso.

As outras respostas podem estar corretas, mas use classes obsoletas.

Java.Time

As aulas antigas de encontro (java.util.date/.calendar etc.) foram suplantadas pelo Java.Time estrutura incorporada ao Java 8 e mais tarde.

As aulas de Java.Time são inspiradas por Joda-Time, definido por JSR 310, estendido pelo projeto Threeten-Extra, por volta para Java 6 e 7 pelo Threeten-Backport projeto e adaptado ao Android no Threetenabp projeto. Ver Tutorial.

Por um momento na linha do tempo em UTC com uma resolução de nanossegundos, usar Instant. Dado um Offset-do-UTC, usar OffsetDateTime. Para fuso horário (Offset + Regras para Anomalias), Use ZonedDateTime, mas por sua natureza não tem min/max, nem ZoneId. Para um valor apenas para data sem horário-dia e sem fuso horário, use LocalDate. Para um valor apenas no horário do dia sem data e sem fuso horário, use LocalTime. Para data de data sem fuso horário, use LocalDateTime.

A seguir, todas as constantes predefinidas.

Cuidado: Desconfie de usar esses valores como algum tipo de bandeira ou significado especial. Muitas outras bibliotecas e bancos de dados de software podem não suportar esses valores extremos.

Para um sinalizador ou significado especial, como um "sem valor disponível", não sugiro escolher um momento arbitrário, mas evite ir a alcances tão extremos para trás ou para a frente no tempo. Talvez o Data de referência da Epoch Unix, o primeiro momento de 1970 na UTC, 1970-01-01T00: 00: 00Z. Definido como uma constante em Java: Instant.epoch


Sobre Java.Time

o Java.Time A estrutura é incorporada ao Java 8 e mais tarde. Essas aulas suplantam o velho problemático legado classes de data de data, como java.util.Date, Calendar, & SimpleDateFormat.

o Joda-Time Projeto, agora em Modo de manutenção, aconselha a migração para o Java.Time Aulas.

Para saber mais, consulte o Oracle Tutorial. E Pesquise o excesso de pilha para muitos exemplos e explicações. Especificação é JSR 310.

Você pode trocar Java.Time objetos diretamente com seu banco de dados. Use um Driver JDBC em conformidade com JDBC 4.2 ou mais tarde. Não há necessidade de cordas, sem necessidade de java.sql.* Aulas.

Onde obter as aulas de Java.Time?

o Threeten-Extra O projeto estende Java.Time com classes adicionais. Este projeto é um terreno de prova para possíveis adições futuras ao Java.Time. Você pode encontrar algumas aulas úteis aqui, como Interval, YearWeek, YearQuarter, e mais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top