You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -12,12 +12,13 @@ Formatar datas, números e valores monetários para localização utilizando as
12
12
13
13
Ainda dentro das ideias de Localização e Internacionalização, é comum a necessidade de apresentar datas, números e valores monetários em diferentes formatos.
14
14
15
-
O exame de certificação compreende quatro classes principais de formatação:
15
+
O exame de certificação compreende cinco classes principais de formatação:
16
16
17
17
* `NumberFormat` -> Formatação geral de números, valores monetários, percentuais e números inteiros com arredondamento, possivelmente baseados em `Locale`.
18
-
* `DecimalFormat` -> Formatação de números quando há necessidade de definições mais específicas do formato.
18
+
* `DecimalFormat` -> Formatação de números quando há necessidade de definições mais específicas ou personalizadas do formato.
19
+
* `DateFormat` -> Formatação de data e hora antes do Java 8 utilizando formato predefinidos.
20
+
* `SimpleDateFormat` -> Formatação de data e hora antes do Java 8 utilizando formatos mais específicos ou personalizados.
19
21
* `DateTimeFormatter` -> Formatação de data e hora após o Java 8.
20
-
* `DateFormat` -> Formatação de data e hora antes do Java 8.
21
22
22
23
==== NumberFormat
23
24
@@ -129,7 +130,7 @@ No `Locale pt_BR`, temos o resultado esperado. Porém, no `Locale en_US` o `80,2
129
130
==== DecimalFormat
130
131
131
132
Enquanto `NumberFormat` permite utilizar formatos predefinidos, `DecimalFormat` permite uma personalização maior. Um exemplo de formato para o `DecimalFormat` é `\#\##,\###.\###`.
132
-
+
133
+
133
134
* `#` preenche a posição com um número, ou omite se não houver nada.
134
135
* `0` preenche a posição com um número, ou 0 se não houver nada.
135
136
* `.` indica onde é a posição do separador decimal.
Para formatar Data e Hora antes do Java 8, são utilizadas as classes de `DateFormat` e `SimpleDateFormat`. Essas classes trabalham em geral com a classe `Date` e fazem parte do pacote `java.text`, diferente de `DateTimeFormatter` que é do novo pacote `java.time.format`.
192
+
193
+
. Obter instâncias de `DateFormat` é muito parecido com `NumberFormat`.
194
+
. É possível definir o formato das instâncias como `SHORT`, `MEDIUM`, `LONG` ou `FULL`.
Perceba que ocorreu uma exceção ao tentar converter uma data utilizando um formatar que espera Data e Hora.
231
+
232
+
==== SimpleDateFormat
233
+
234
+
A classe `SimpleDateFormat` permite criar formatos mais personalizados para apresentar Data e Hora, como `dd/MM/yyyy HH:mm:ss`. Seguem as letras mais importantes utilizadas na formatação para o exame:
235
+
236
+
* `y` -> Ano (2019, 19)
237
+
* `M` -> Mês (8, 08, Ago, Agosto)
238
+
* `d` -> Dia (06)
239
+
* `h` -> Hora em formato AM/PM
240
+
* `H` -> Hora em formato 24H
241
+
* `m` -> Minutos
242
+
* `s` -> Segundos
243
+
244
+
Em geral (existem exceções), quanto mais letras forem utilizadas, mais extenso é o formato apresentado. Por exemplo:
245
+
246
+
* `M` -> 8
247
+
* `MM` -> 08
248
+
* `MMM` -> Ago
249
+
* `MMMM` -> Agosto
250
+
251
+
. É possível criar formatos personalizados para formatar um `Date` utilizando o construtor de `SimpleDateFormat`.
Para criar um `DateTimeFormatter` personalizado, é necessário conhecer o que cada letra do formato representa. Seguem abaixo os mais importantes para o exame de certificação:
356
+
Para criar um `DateTimeFormatter` personalizado, é necessário conhecer o que cada letra do formato representa. Volte na seção de `SimpleDateFormat` caso não se lembre.
259
357
+
260
-
* `y` -> Ano (2019, 19)
261
-
* `M` -> Mês (8, 08, Ago, Agosto)
262
-
* `d` -> Dia (06)
263
-
* `h` -> Hora em formato AM/PM
264
-
* `H` -> Hora em formato 24H
265
-
* `m` -> Minutos
266
-
* `s` -> Segundos
267
-
+
268
-
Em geral (existem exceções), quanto mais letras forem utilizadas, mais extenso é o formato apresentado. Por exemplo:
269
-
* `M` -> 8
270
-
* `MM` -> 08
271
-
* `MMM` -> Ago
272
-
* `MMMM` -> Agosto
273
358
274
359
. Não é possível formatar uma Data/Hora caso o objeto fornecido não tenha os campos necessários, como tentar apresentar a Data e fornecer um `LocalTime`.
0 commit comments