Além das expressões Lambda, fluxos e várias melhorias pequenas, o Java 8 também introduziu um novo conjunto de APIs de tempo e data. O processamento de datas, calendários e tempo de Java sempre foi criticado, especialmente sua decisão de definir java.Util.Tear como modificável e implementar o SimpleDateFormat como não-seguro. Parece que a Java percebeu que precisa fornecer um melhor suporte para a funcionalidade de hora e data, o que também é uma coisa boa para as comunidades usadas para usar a biblioteca de tempo e data da Joda. A maior vantagem dessa nova biblioteca de horas e data é que ela define claramente alguns conceitos relacionados à hora e à data, como tempo instantâneo (instantâneo), duração (duração), data (data), hora (hora), fuso horário (hora -zona) e período de tempo (período). Também se baseia em algumas das vantagens da biblioteca Joda, como distinguir o entendimento do tempo e data entre humanos e máquinas. O Java 8 ainda usa o sistema de calendário da ISO e, diferentemente de seus antecessores, as classes no pacote Java.Time são imutáveis e seguras de threads. A nova API de hora e data está localizada no pacote Java.Time.
1.Instant-isso representa um carimbo de hora
2. LocalDate-Data que não inclui o tempo específico, como 2014-01-14. Pode ser usado para armazenar aniversários, aniversário, datas de indução e muito mais.
3.LocalTime - representa um tempo sem datas
4.LocaldateTime-It contém data e hora, mas ainda não há informações de compensação ou fuso horário.
5. ZonedDateTime - Esta é uma data e hora completas que contêm o fuso horário, e o deslocamento é baseado no tempo UTC/Greenwich.
A nova biblioteca também adiciona Zoneoffset e Zoned, que pode fornecer melhor suporte para fusos horários. Com o novo DateTimeFormatter, a análise e a formatação das datas também se tornaram novas. Apenas mencionando este artigo, escrevi este artigo quando Java estava prestes a lançar esse novo recurso no momento do ano passado, então você descobrirá que o tempo nos exemplos ainda é do ano passado. Se você executar esses exemplos, os valores que eles retornam estão definitivamente corretos.
Como o Java 8 lida com tempo e data
Alguém me perguntou qual é a melhor maneira de aprender uma nova biblioteca? Minha resposta é que é usá -lo em projetos reais. Haverá uma variedade de necessidades em um projeto real, que levará os desenvolvedores a explorar e pesquisar esta nova biblioteca. Em suma, apenas a tarefa em si realmente o encorajará a explorar e aprender. O mesmo vale para a nova API de data e hora do Java 8. Para aprender esta nova biblioteca do Java 8, aqui criei 20 exemplos orientados para a tarefa. Vamos começar com uma tarefa simples, como usar a biblioteca Java 8 Time and Date para representar hoje e, em seguida, gerar uma data completa com o fuso horário e horário e depois estudar como concluir algumas tarefas mais práticas, como desenvolver Um pedido de lembrete para descobrir quantos dias existem antes de certas datas, como aniversários, aniversário de domingo, no próximo dia de cobrança, no próximo dia premium ou data de vencimento do cartão de crédito.
Exemplo 1 Como obter a data do dia em Java 8
Há uma aula em Java 8 chamada LocalDate, que pode ser usada para representar a data de hoje. Esta classe é um pouco diferente de java.util.date porque contém apenas datas e não tempo. Portanto, se você precisar representar apenas a data sem incluir a hora, poderá usá -lo.
A cópia do código é a seguinte:
LocalDate Today = localDate.now ();
Saída
Data local de hoje: 2014-01-14
Você pode ver que ele cria a data de hoje sem informações sobre o tempo. Ele também formata a data e depois a produz.
Exemplo 2 Como obter o ano atual, mês, dia em Java 8
A classe LocalDate fornece alguns métodos convenientes para extrair atributos de ano, mês, dia e outra data. Usando esses métodos, você pode obter qualquer atributo de data necessário, sem usar classes como java.util.calendar:
A cópia do código é a seguinte:
LocalDate Today = localDate.now ();
int ano = Today.getYear ();
int mês = Today.getMonthValue ();
int dia = Today.getdayofmonth ();
System.out.printf ("Ano: %D mês: %D Dia: %d /t %n", ano, mês, dia);
Saída
Data local de hoje: 2014-01-14
Ano: 2014 mês: 1 dia: 14
Como você pode ver, é muito simples obter informações de ano e mês no Java 8. Basta usar o método Getter correspondente, sem memória e é muito intuitivo. Você pode compará -lo com o antigo método de escrita de obter o ano atual, o mês e o dia em Java.
Exemplo 3 Como obter uma data específica em Java 8
No primeiro exemplo, vemos que é muito simples gerar a data do dia através do método estático agora (), mas através de outro método de fábrica muito útil localDate.of (), você pode criar qualquer data, que aceite o parâmetro do ano, mês e dia, e depois retorna uma instância local do local. Há outra boa notícia sobre esse método de que não cometeu erros na API anterior. Tudo o que você escreve sobre a data aqui é, por exemplo, no exemplo abaixo, representa 14 de janeiro e não há lógica oculta.
A cópia do código é a seguinte:
LOCALDATE DATEOFBIRTH = LOCALDATE.OF (2010, 01, 14);
System.out.println ("Sua data de nascimento é:" + dateOfBirth);
Saída: sua data de nascimento é: 2010-01-14
Pode -se observar que a data da criação é o que escrevemos, 14 de janeiro de 2014.
Exemplo 4 Como verificar se duas datas são iguais em Java 8
Se você falar sobre a tarefa real de processar o tempo e a data da realidade, uma coisa comum é verificar se as duas datas são iguais. Muitas vezes, você pode encontrar perguntas sobre se hoje é um dia especial, como aniversário, aniversário ou férias. Às vezes, você terá uma data para verificar se é um certo dia, por exemplo, um feriado. O exemplo a seguir o ajudará a concluir esse tipo de tarefa no Java 8. Como você pode pensar, o LocalDate substitui o método igual a comparar as datas da seguinte forma:
A cópia do código é a seguinte:
LocalDate Date1 = LocalDate.Of (2014, 01, 14);
System.out.printf ("hoje %s e date1 %s são a mesma data %n", hoje, data1);
}
Saída
Hoje 2014-01-14 e Date1 2014-01-14 são a mesma data
Nesse caso, as duas datas que comparamos são iguais. Ao mesmo tempo, se você receber uma string de data formatada no código, precisará analisá -la em uma data antes de compará -la. Você pode comparar este exemplo com a maneira como o Java compara as datas antes e descobrirá que é muito emocionante.
Exemplo 5 Como verificar eventos duplicados em Java 8, digamos aniversário
Há outra tarefa prática relacionada à hora e data em Java, que é verificar eventos duplicados, como dias mensais de cobrança, aniversário de casamento, dias de reembolso mensal ou o dia em que você paga prêmios de seguro todos os anos. Se você trabalha em uma empresa de comércio eletrônico, definitivamente haverá um módulo que enviará desejos de aniversário aos usuários e enviará saudações a eles em todas as férias importantes, como Natal, Ação de Graças e na Índia, pode ser o Deepawali Festival. Como determinar se é um festival ou um evento duplicado em Java? Use a aula do mês. Esta aula é composta por mês e dia e não contém informações do ano, o que significa que você pode usá -las para representar alguns dias que aparecem repetidamente a cada ano. Obviamente, existem algumas outras combinações, como a aula de um ano. Também é imutável e seguro para threads, como outras classes na nova biblioteca de horários e data, e também é uma classe de valor. Vamos usar um exemplo para ver como usar o mês de dia para verificar uma data duplicada:
A cópia do código é a seguinte:
LOCALDATE DATEOFBIRTH = LOCALDATE.OF (2010, 01, 14);
Aniversário de dia = mês.of (dateOfbirth.getMonth (), dateOfbirth.Getdayofmonth ());
Monthday CurrentMonthday = Monthday.From (hoje);
if (currentMonthday.Equals (aniversário)) {
System.out.println ("Muitos muitos retornos felizes do dia !!");
}outro{
System.out.println ("Desculpe, hoje não é seu aniversário");
}
Saída: muitos muitos retornos felizes do dia !!
Embora os anos sejam diferentes, hoje é o aniversário, então você verá um desejo de aniversário na produção. Você pode ajustar o tempo do sistema e executar o programa para ver se ele lembra o seu próximo aniversário.
Exemplo 6 Como obter o horário atual em Java 8
Isso é muito semelhante a obter a data atual no primeiro exemplo. Desta vez, estamos usando uma classe chamada LocalTime, que é uma hora sem uma data e é um parente próximo ao LocalDate. Aqui você também pode usar o método de fábrica estática agora () para obter o horário atual. O formato padrão é hh: mm: ss: nnn, onde nnn é nanossegundos. Você pode compará -lo com como obter o horário atual no Java 8 antes.
A cópia do código é a seguinte:
LocalTime Time = localTime.now ();
Saída
hora local agora: 16: 33: 33.369 // em hora, minutos, segundos, nano segundos
Como você pode ver, o horário atual não inclui datas, porque o LocalTime só tem tempo e nenhuma datas.
Exemplo 7 Como aumentar o número de horas no tempo
Muitas vezes precisamos adicionar horas, minutos ou segundos para calcular o tempo futuro. O Java 8 não apenas fornece classes imutáveis e seguras de threads, mas também fornece alguns métodos mais convenientes, como Plushours () para substituir o método add () add () original. A propósito, esses métodos retornam uma referência a uma nova instância local, porque o LocalTime é imutável, não se esqueça de armazenar essa nova referência.
A cópia do código é a seguinte:
LocalTime Time = localTime.now ();
LocalTime newTime = time.plushours (2);
System.out.println ("Hora após 2 horas:" + novoTime);
Saída:
Hora após 2 horas: 18: 33: 33.369
Você pode ver que o horário atual é 16: 33: 33.369 após 2 horas. Agora você pode compará -lo com a maneira antiga de adicionar ou diminuir horas em Java. Você pode dizer qual método é melhor à primeira vista.
Exemplo 8 Como obter uma data após 1 semana
Isso é semelhante ao exemplo anterior de obter tempo após 2 horas, aqui vamos aprender como obter a data após 1 semana. LocalDate é usado para representar datas sem tempo. Como o LocalDate também é imutável, qualquer operação de modificação retorna uma nova instância; portanto, não se esqueça de salvá -la.
A cópia do código é a seguinte:
LocalDate nextWeek = Today.Plus (1, Chronounit.weeks);
System.out.println ("Hoje é:" + hoje);
System.out.println ("Data após 1 semana:" + NextWeek);
Saída:
Hoje é: 2014-01-14
Data após 1 semana: 2014-01-21
Você pode ver qual será a data em 7 dias, ou seja, uma semana. Você pode usar esse método para adicionar um mês, ano, hora, minuto ou até dez anos e conferir a aula de Chronounit na API Java para obter mais opções.
Exemplo 9 Data em torno de um ano
Esta é uma sequência do exemplo anterior. No exemplo acima, aprendemos a usar o método LocalDate's Plus () para adicionar uma data, semana ou mês a uma data.
A cópia do código é a seguinte:
LocalDate Anterioryear = Today.Minus (1, Chronounit.Years);
System.out.println ("Data antes de 1 ano:" + Anterior);
LocalDate nextyear = Today.Plus (1, anos);
System.out.println ("Data após 1 ano:" + nextyear);
Saída:
Data antes de 1 ano: 2013-01-14
Data após 1 ano: 2015-01-14
Pode -se observar que há dois anos, um em 2013, o outro em 2015 e os anos por volta de 2014.
Exemplo 10 usando o relógio em java 8
O Java 8 vem com uma aula de relógio, que você pode usar para obter o tempo, data ou hora atual em um determinado fuso horário. Os métodos de relógio podem ser usados em vez de métodos de System.CurrentTimeInmillis () e TimeZone.getDefault ().
A cópia do código é a seguinte:
// Retorna a hora atual com base no relógio do sistema e define como UTC.
Relógio = relógio.systemutc ();
System.out.println ("relógio:" + relógio);
// retorna tempo com base no relógio do relógio do sistema defaultClock =
Clock.systemDefaultZone ();
System.out.println ("relógio:" + relógio);
Saída:
Relógio: Systemclock [Z]
Relógio: Systemclock [Z]
Você pode comparar este relógio com a data especificada, como:
A cópia do código é a seguinte:
classe pública myclass {
relógio privado; // injeção de dependência ...
Processo Public Void (LocalDate EventDate) {
if (eventdate.isbefore (localdate.now (relógio)) {
...
}
}
}
Isso é bastante conveniente se você precisar processar datas em diferentes fusos horários.
Exemplo 11 Como determinar se uma data é antes ou depois de outra data em Java
Esta também é uma tarefa comum em projetos reais. Como você diz se uma data é antes ou depois de outra data, ou exatamente igual? No Java 8, a classe LocalDate possui um método ISBefore () e Isafter () que pode ser usado para comparar duas datas. Se a data de chamar o método for anterior à data fornecida, o método ISBEFORE () retornará true.
A cópia do código é a seguinte:
LocalDate Tomorrow = LocalDate.Of (2014, 1, 15);
System.out.println ("Amanhã vem depois de hoje");
}
LocalDate ontem = hoje.minus (1, dias);
if (ontem.isbe antes (hoje)) {
System.out.println ("Ontem é dia antes de hoje");
}
Saída:
Amanhã vem depois de hoje
Ontem é dia antes de hoje
Pode -se observar que a data em Java 8 é bastante simples. Não há necessidade de usar outra classe como o calendário para concluir tarefas semelhantes.
Exemplo 12 Lidando com diferentes fusos horários em Java 8
O Java 8 não apenas separa datas e horários, mas também tem um fuso horário. Atualmente, existem vários conjuntos de classes relacionadas ao fuso horário. É equivalente à classe GregorianCalendar antes de Java 8. Usando esta classe, você pode converter o horário local no tempo correspondente em outro fuso horário, como o exemplo a seguir:
A cópia do código é a seguinte:
// Data e hora com o fuso horário em Java 8 ZoneId America = ZoneId.Of ("America/New_York");
LocalDateTime LocalTDateAndTime = LocalDateTime.now ();
ZonedDateTime DataEndTimeInnewyork = ZonedDateTime.of (LocalTDateAndtime, America);
System.out.println ("Data e hora atuais em um fuso horário específico:" + DataEndTimeInNewYork);
Saída:
Data e hora atuais em um determinado fuso horário: 2014-01-14T16: 33: 33.373-05: 00 [America/new_york]
Você pode compará -lo com o método anterior de conversão de tempo local em tempo GMT. A propósito, assim como antes do Java 8, não faça o texto correspondente ao fuso horário errado, caso contrário, você encontrará essa exceção:
A cópia do código é a seguinte:
Exceção no thread "Main" java.time.zone.zonelesexception: ID do tempo desconhecido: Ásia/Tóquio
em java.time.zone.zonerulesprovider.getProvider (zonelesprovider.java:272)
em java.time.zone.zonerulesprovider.getRules (zonelesprovider.java:227)
em java.time.zoneregion.ofid (zoneregion.java:120)
em java.time.zoneid.of (zoneid.java:403)
em java.time.zoneid.of (zoneid.java:351)
Exemplo 13 Como representar uma data fixa, como o tempo de expiração do cartão de crédito
Assim como o mês representa um dia recorrente, o ano é outra combinação, que representa datas como data de reembolso do cartão de crédito, data de vencimento do depósito fixo, data de maturidade das opções. Você pode usar esta classe para descobrir quantos dias existem nesse mês.
A cópia do código é a seguinte:
ANO Monthrethyearmonth = anoMONTH.NOW ();
Ano de Anonth CreditcardExpiry = anoMonth.Of (2018, Month.Febrovery);
System.out.printf ("Seu cartão de crédito expira em %S %N", CreditcardExpiry);
Saída:
Dias no mês de 2014-01: 31
Seu cartão de crédito expira em 2018-02
Exemplo 14 Como verificar o ano salto em Java 8
Isso não é complicado. Se você ainda deseja recriar a roda, pode olhar para este código.
A cópia do código é a seguinte:
if (Today.isleApyear ()) {
System.out.println ("Este ano é o ano bisseiro");
}outro {
System.out.println ("2014 não é um ano bissexto");
}
Saída: 2014 não é um ano bissexto
Você pode verificar mais alguns anos para ver se os resultados estão corretos.
Exemplo 15 Quantos dias e meses estão incluídos entre duas datas
Outra tarefa comum é calcular quantos dias, semanas ou anos são incluídos entre duas datas. Você pode usar a classe Java.Time.Period para concluir esta função. No exemplo a seguir, calcularemos quantos meses a data atual é separada de uma data futura.
A cópia do código é a seguinte:
LocalDate Java8Release = LocalDate.Of (2014, Month.March, 14);
Período do períodoTONEXTJAVARELEASE =
Período.
System.out.println ("meses restantes entre hoje e Java 8 Release:" + periodTonextJavarElease.getMonths ());
Saída:
Meses restantes entre hoje e Java 8 Lançamento: 2
Como você pode ver, este mês é janeiro e a data de lançamento do Java 8 é março, então há 2 meses entre eles.
Exemplo 16 data e hora com deslocamento de fuso horário
No Java 8, você pode usar a classe Zoneoffset para representar um determinado fuso horário, como a Índia é GMT ou UTC5: 30, e você pode usar seu método estático em zoneoffset.of () para obter o fuso horário correspondente. Desde que você obtenha esse deslocamento, você pode usar o LocalDateTime e esse deslocamento para criar um OffsetDateTime.
A cópia do código é a seguinte:
LocalDateTime DateTime = LocalDateTime.Of (2014, Month.January, 14, 19, 30);
Zoneoffset offset = zoneoffset.of ("+05:30");
OffsetDateTime Data = OffsetDateTime.Of (DateTime, Offset);
System.out.println ("Data e hora com o deslocamento do fuso horário em java:" + data);
Saída:
Data e hora com o deslocamento do fuso horário em Java: 2014-01-14T19: 30+05: 30
Você pode ver que a hora e a data atuais estão relacionadas ao fuso horário. Outro ponto é que o OffsetDateTime é principalmente para as máquinas entendem.
Exemplo 17 Como obter o registro de data e hora atual em Java 8
Se você ainda se lembra de como obter o carimbo de data e hora atual antes do Java 8, agora é um pedaço de bolo. A classe instantânea possui um método estático de fábrica agora () que pode retornar o registro de data e hora atual, como segue:
A cópia do código é a seguinte:
Timestamp instantâneo = instant.now ();
System.out.println ("Qual é o valor deste instante" + timestamp);
Saída:
Qual é o valor deste instante 2014-01-14T08: 33: 33.379Z
Pode -se observar que o registro de data e hora atual contém data e hora, o que é muito semelhante ao java.util.date. Converter entre eles, por exemplo, Date.From (Instant) é usado para converter instantâneo em java.util.date e date.ToinStant () converte a data em instantâneo.
Exemplo 18 Como analisar/formatar datas usando um formatador predefinido em Java 8
Antes do Java 8, a formatação da hora e da data era um trabalho técnico. Graças às variáveis locais de threads, isso o torna viável em um ambiente multithread, mas a Java mantém esse estado há muito tempo. Desta vez, introduz um novo formatador de data e hora seguros para threads. Ele também vem com alguns formatados predefinidos, incluindo formatos de data comumente usados. Por exemplo, neste exemplo, usamos o formato Basicisodate predefinido, que será formato em 14 de fevereiro de 2014 em 20140114.
A cópia do código é a seguinte:
String DayafterTomMorro = "20140116";
LocalDate formatted = LocalDate.parse (DayAfterTomMorrow,
DateTimeFormatter.basic_iso_date);
System.out.printf ("Data gerada a partir de String %s é %S %N", DayafterMomMorrow, formated);
Saída:
Data gerada a partir da String 20140116 é 2014-01-16
Você pode ver que a data gerada corresponde ao valor da sequência especificada, o que significa que o formato da data é um pouco diferente.
Exemplo 19 Como usar um formatador personalizado para analisar datas em java
No exemplo acima, usamos o formatador interno de data de tempo para analisar a string de data. Obviamente, o formatador predefinido é realmente bom, mas às vezes você ainda pode precisar usar um formato de data personalizado. O formato de data no exemplo a seguir é "mmm dd yyyy". Você pode passar qualquer padrão para o método estático da Pattern () do DateTimeFormatter (), que retorna uma instância, com o valor literal desse padrão sendo o mesmo do exemplo anterior. Por exemplo, M ainda representa o mês, enquanto M ainda é o segmento. Um modo inválido lançará uma exceção do DateTimeParseException, mas se for um erro lógico, como o uso de M quando é hora de usar m, não há nada a fazer.
A cópia do código é a seguinte:
String Goodfriday = "18 de abril de 2014";
tentar {
DATETIMEFORMATTER FORMATRE = DATETIMEFORMATTER.OFPATTERN ("MMM DD AAA");
LocalDate Holiday = LocalDate.Parse (Goodfriday, Formatter);
System.out.printf ("String com êxito parsed %s, data é %s %n", Goodfriday, férias);
} catch (DateTeMarPeException Ex) {
System.out.printf ("%s não é parsável!%N", Goodfriday);
Ex.PrintStackTrace ();
}
Saída:
String analisada com sucesso 18 de abril de 2014, a data é 2014-04-18
Você pode ver que o valor da data corresponde à sequência passada, mas o formato é diferente.
Exemplo 20 Como formatar datas e convertê -las em strings em java 8
Nos dois exemplos anteriores, embora tenhamos usado a classe DateTimeFormatter, analisamos principalmente a string de data. Neste exemplo, vamos fazer o contrário. Aqui temos uma instância da classe LocalDateTime, que queremos converter em uma string de data formatada. Esta é de longe a maneira mais fácil e conveniente de converter datas em cordas em Java. O exemplo a seguir retornará uma string formatada. O mesmo que o exemplo anterior é que ainda precisamos usar a sequência de padrões especificados para criar uma instância da classe DateTimeFormatter, mas a chamada não é o método parse da classe LocalDate, mas seu método format (). Este método retornará uma string representando a data atual e o padrão correspondente é definido na instância do DateTimeFormatter que recebe.
A cópia do código é a seguinte:
LocalDateTime ArrivalDate = LocalDateTime.now ();
tentar {
DATETIMEFORMATTER FORMAT = DATETIMEFORMATTER.OFPATTERN ("MMM DD AAA AA AAÇÃO HH: MM A");
Aterramento de string = ArrivalDate.Format (formato);
System.out.printf ("Chegando a: %s %n", pouso);
} catch (DateTimeException Ex) {
System.out.printf ("%s não pode ser formatado!%N", chegou);
Ex.PrintStackTrace ();
}
Saída: Chegando a: 14 de janeiro de 2014 16:33
Pode -se observar que o tempo atual é representado pelo padrão "mmm dd yyyy hh: mm a", que contém o mês representado por três letras e o tempo representado por AM e PM.
Vários pontos -chave da API de data e hora em Java 8
Depois de ler esses exemplos, acredito que você tem um certo entendimento da nova API do Java 8 Hora and Date. Agora vamos revisar alguns elementos -chave sobre esta nova API.
1. Ele fornece javax.time.zoneid para lidar com fusos horários.
2. Fornece aulas de LocalDate e Localtime
3. Todas as classes na nova API de hora e data em Java 8 são imutáveis e seguras de threads, que é exatamente o oposto da data anterior e as APIs do calendário, onde são como java.util.Tate e SimpleDateFormat. -seguro.
4. Um ponto muito importante na nova API de hora e data é que ela define claramente os conceitos básicos de tempo e data, como tempo instantâneo, duração, data, horário, fuso horário e período. Todos eles são baseados no sistema de calendário ISO.
5. Todo desenvolvedor de Java deve conhecer pelo menos essas cinco classes nesta nova API:
5.1) Instantaneamente representa um registro de data e hora, como 2014-01-14T02: 20: 13.592Z, que pode ser obtido na classe Java.Time.Clock, como esta: Instant Current = Clock.System (ZoneId.Of ("Asia / Tóquio ")). Instant ();
5.2) LocalDate Representa uma data sem tempo, como 2014-01-14. Pode ser usado para armazenar aniversários, aniversário, datas de indução e muito mais.
5.3) LocalTime, representa uma hora sem uma data
5.4) LocalDateTime, ele contém tempo e data, mas não há compensação com o fuso horário
5.5) ZONENDDATETIME Este é um ajuste de fuso horário com base no tempo UTC/Greenwich
1. O pacote principal desta biblioteca é o Java.Time, que contém classes que representam data, hora, instantâneo e duração. Possui dois subpackagens, um é Java.Time.foramt, o que é óbvio para o que isso é usado, e o outro é Java.Time.Temporal, que pode acessar vários campos de um nível mais baixo.
2. O fuso horário refere -se à região na Terra que compartilha o mesmo tempo padrão. Cada fuso horário possui um identificador único, e também há um formato de região/cidade (Ásia/Tóquio) e um tempo de deslocamento a partir do tempo de Greenwich. Por exemplo, o tempo de deslocamento em Tóquio é +09: 00.
3.OffSetDateTime Class Na verdade contém LocalDateTime e Zoneoffset. É usado para representar uma data completa (ano, mês, dia) e hora (hora, minuto, nanossegundo) contendo o deslocamento do tempo de Greenwich (+/- hora: minuto, por exemplo +06: 00 ou -08: 00).
4. A classe DateTimeFormatter é usada para formatar e analisar datas em Java. Ao contrário do SimpleDateFormat, ele é imutável e seguro para roscas e pode ser atribuído a uma variável estática, se necessário. A classe DateTimeFormatter fornece muitos formatados predefinidos e você também pode personalizar o formato desejado. Obviamente, de acordo com a convenção, ele também possui um método parse () usado para converter a string em uma data e, se houver algum erro durante a conversão, ele lançará uma exceção do DateTimeParseException. Da mesma forma, a classe DateFormatter também possui um método Format () para formatação.
5. Em outras palavras, os dois formatos de data de "mmm d yyyy" e "mmm dd yyyy" também são um pouco diferentes. O que entra em "2 de janeiro de 2014" reportará um erro porque espera que dois personagens cheguem a partir do mês. Para resolver esse problema, se o dia for um dígito único, você precisará fazer 0 na frente, por exemplo, "2 de janeiro de 2014" deve ser alterado para "Jan 02 2014".
É tudo sobre Java 8, a nova API de hora e data. Esses exemplos curtos são suficientes para entender algumas das novas classes nesta nova API. Como é explicado com base em tarefas reais, quando você encontra o trabalho em Java que precisa processar tempo e data, você não precisa mais pesquisar. Aprendemos a criar e modificar instâncias de data. Também aprendemos sobre as diferenças entre datas puras, data mais hora, data mais fusos horários, sabemos como comparar duas datas e como encontrar um determinado dia com uma data especificada, como o próximo aniversário, aniversário ou data de seguro. Também aprendemos a analisar e o formato datas em Java 8 de maneira segura por threads sem usar variáveis locais de linha ou bibliotecas de terceiros. A nova API é competente para as tarefas relacionadas a horas e data.