Giter Site home page Giter Site logo

hkotsubo / java-datetime-book Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 4.0 105 KB

Códigos do livro "Datas e horas: Conceitos fundamentais e as APIs do Java"

Home Page: https://www.casadocodigo.com.br/products/livro-datas-e-horas

License: GNU General Public License v3.0

Java 100.00%
datetime java

java-datetime-book's Introduction

Datas e horas: Conceitos fundamentais e as APIs do Java

Neste repositório estão alguns códigos de exemplo usados no livro "Datas e horas: Conceitos fundamentais e as APIs do Java". Como muitos códigos são explicados em mais detalhes no texto, e vários são apenas didáticos, não houve uma preocupação muito grande com design patterns, "boas práticas" e coisas do tipo.

Algumas classes específicas são citadas no livro, mas a maioria são os mesmos códigos utilizados no texto, para servir como referência. Há um pacote para cada parte do livro, e uma classe para capítulo (exceto um ou outro que cita mais de uma classe específica), sendo que os exemplos seguem a ordem em que aparecem no texto, além de serem divididos em métodos, assim você pode chamar apenas os que lhe interessarem.

Há também alguns exemplos que não estão no livro, seja por estarem fora do escopo da discussão, seja por falta de espaço mesmo.

Os pacotes seguem a mesma divisão dos capítulos:

  • exemplos.part1: como esta parte é mais conceitual, os códigos são apenas para ilustrar os conceitos
  • exemplos.part2: mostra a API legada (java.util.Date, Calendar, SimpleDateFormat etc)
  • exemplos.part3: foca na API java.time

Todos os exemplos usam o pacote exemplos.setup para fazer as configurações iniciais.

Existem ainda pacotes adicionais, com códigos que não estão no livro:

  • outros: Joda-time e Threeten Backport, duas bibliotecas que são apenas mencionadas no livro. Este pacote possui alguns exemplos de uso destas APIs.
  • mysql: contém exemplos com o pacote java.sql, usando o banco MySQL.

Configurações

É importante ressaltar que todos os códigos usam a classe exemplos.setup.Setup, que ajusta algumas configurações, de forma a não ter uma variação tão grande nos resultados gerados. Estas configurações são:

  • setar o locale default da JVM para pt_BR (português do Brasil)
  • setar o timezone default para America/Sao_Paulo (Horário de Brasília)
  • usar como data/hora atual "4 de Maio de 2018, às 17:00 em São Paulo"

O terceiro item é feito usando-se um java.time.Clock (que é explicado em detalhes no capítulo 19). Sendo assim, nos códigos deste projeto, para obter a data/hora "atual" você terá algo assim:

Date dataAtual = new Date(clock().millis());
LocalDateTime dataHoraAtual = LocalDateTime.now(clock());

Sendo que no livro estará assim:

Date dataAtual = new Date();
LocalDateTime dataHoraAtual = LocalDateTime.now();

Se eu não usasse o Clock, o resultado seria a data/hora atual no momento em que você rodar o código, e obviamente os resultados mudarão a cada execução, além de ficarem totalmente diferentes do livro. Para deixar as coisas menos confusas e manter os mesmos resultados, optei por simular a data/hora atual. Se não souber como o Clock funciona, por ora basta saber que ele serve para obter este valor simulado.

java-datetime-book's People

Contributors

hkotsubo avatar

Stargazers

 avatar Reginaldo C Domingos avatar Alexandre Lopes avatar Diego Aguiar avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.