Skip to content

Commit f7f1ecb

Browse files
committed
revisão e ajustes #11
1 parent 1a7b06a commit f7f1ecb

File tree

3 files changed

+25
-20
lines changed

3 files changed

+25
-20
lines changed

book/03-localization/sections/04-formats.asc

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
:java-package: src/org/j6toj8/localization
23
:section-java-package: ../../../{java-package}
34

@@ -10,13 +11,13 @@ Format dates, numbers, and currency values for localization with the NumberForma
1011
Formatar datas, números e valores monetários para localização utilizando as classes NumberFormat e DateFormat, incluindo padrões de formato de número e data.
1112
--------------------------------------------------
1213

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+
Ainda dentro do assunto de Localização e Internacionalização, é comum a necessidade de apresentar datas, números e valores monetários em diferentes formatos.
1415

1516
O exame de certificação compreende cinco classes principais de formatação:
1617

1718
* `NumberFormat` -> Formatação geral de números, valores monetários, percentuais e números inteiros com arredondamento, possivelmente baseados em `Locale`.
1819
* `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+
* `DateFormat` -> Formatação de data e hora antes do Java 8 utilizando formatos predefinidos.
2021
* `SimpleDateFormat` -> Formatação de data e hora antes do Java 8 utilizando formatos mais específicos ou personalizados.
2122
* `DateTimeFormatter` -> Formatação de data e hora após o Java 8.
2223

@@ -32,7 +33,7 @@ include::{section-java-package}/formats/numberformat/NumberFormat_Instance.java[
3233
+
3334
Lembre-se que, se não for informado o `Locale`, será utilizado o padrão. O ideal é sempre informar o `Locale`.
3435

35-
. O `NumberFormat` por ser utilizado para transformar números em Strings.
36+
. O `NumberFormat` pode ser utilizado para transformar números em Strings.
3637
+
3738
[source,java,indent=0]
3839
.{java-package}/formats/numberformat/NumberFormat_NumberToString.java
@@ -66,9 +67,9 @@ en_US: 100005
6667
fr_FR: 1000.05
6768
----
6869
+
69-
Perceba que dependendo do `Locale`, estamos representando um número diferente, e isso muda o resultado do parse.
70+
Perceba que dependendo do `Locale` estamos representando um número diferente, e isso muda o resultado do parse.
7071

71-
. O `NumberFormat` por ser utilizado para transformar Strings em valores monetários, e vice-versa.
72+
. O `NumberFormat` pode ser utilizado para transformar Strings em valores monetários, e vice-versa.
7273
+
7374
[source,java,indent=0]
7475
.{java-package}/formats/numberformat/NumberFormat_Currency.java
@@ -89,7 +90,7 @@ Unparseable number: "R$ 1000,05"
8990
+
9091
Perceba que novamente o resultado muda de acordo com o `Locale`. Além disso, não é possível converter a representação da moeda brasileira com um `Locale` `en_US` ou `fr_FR`.
9192

92-
. O `NumberFormat` por ser utilizado para transformar Strings em percentuais, e vice-versa.
93+
. O `NumberFormat` pode ser utilizado para transformar Strings em percentuais, e vice-versa.
9394
+
9495
[source,java,indent=0]
9596
.{java-package}/formats/numberformat/NumberFormat_Percent.java
@@ -125,16 +126,18 @@ pt_BR: 0.802
125126
en_US: 8.02
126127
----
127128
+
128-
No `Locale pt_BR`, temos o resultado esperado. Porém, no `Locale en_US` o `80,2%` se torna `802%`, pois a vírgula não é usada como separador de decimal.
129+
No `Locale pt_BR` temos o resultado esperado. Porém, no `Locale en_US` o `80,2%` se torna `802%` pois a vírgula não é usada como separador de decimal.
129130

130131
==== DecimalFormat
131132

132133
Enquanto `NumberFormat` permite utilizar formatos predefinidos, `DecimalFormat` permite uma personalização maior. Um exemplo de formato para o `DecimalFormat` é `\#\##,\###.\###`.
133134

134-
* `#` preenche a posição com um número, ou omite se não houver nada.
135-
* `0` preenche a posição com um número, ou 0 se não houver nada.
136-
* `.` indica onde é a posição do separador decimal.
137-
* `,` indica onde é a posição do separador de grupos.
135+
* `#` -> preenche a posição com um número, ou omite se não houver nada.
136+
* `0` -> preenche a posição com um número, ou 0 se não houver nada.
137+
* `.` -> indica onde é a posição do separador decimal.
138+
* `,` -> indica onde é a posição do separador de grupos.
139+
140+
//-- ASC: força uma nova lista não associada aos bullets acima
138141

139142
. É possível obter uma instância de `DecimalFormat` utilizando o construtor.
140143
+
@@ -158,7 +161,7 @@ include::{section-java-package}/formats/decimalformat/DecimalFormat_Instance.jav
158161
+
159162
Estou executando o código onde o `Locale` padrão é `pt_BR`, por isso a saída no console apresenta vírgulas para separar grupos e pontos para separar os decimais.
160163

161-
. Para utilizar um `Locale` específico, é necessário instanciar um `NumberFormat` e fazer um _cast_ para `DecimalFormat`.
164+
. Para utilizar um `Locale` específico é necessário instanciar um `NumberFormat` e fazer um _cast_ para `DecimalFormat`.
162165
+
163166
[source,java,indent=0]
164167
.{java-package}/formats/decimalformat/DecimalFormat_Locale.java
@@ -231,7 +234,7 @@ Perceba que ocorreu uma exceção ao tentar converter uma data utilizando um for
231234

232235
==== SimpleDateFormat
233236

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:
237+
A classe `SimpleDateFormat` permite criar formatos mais personalizados para apresentar Data e Hora, como `dd/MM/yyyy HH:mm:ss`. A seguir, as letras mais importantes utilizadas na formatação para o exame:
235238

236239
* `y` -> Ano (2019, 19)
237240
* `M` -> Mês (8, 08, Ago, Agosto)
@@ -248,6 +251,8 @@ Em geral (existem exceções), quanto mais letras forem utilizadas, mais extenso
248251
* `MMM` -> Ago
249252
* `MMMM` -> Agosto
250253

254+
//-- ASC: força uma nova lista não associada aos bullets acima
255+
251256
. É possível criar formatos personalizados para formatar um `Date` utilizando o construtor de `SimpleDateFormat`.
252257
+
253258
[source,java,indent=0]
@@ -285,7 +290,7 @@ Perceba a exceção ao tentar utilizar o formato incorreto.
285290

286291
==== DateTimeFormatter
287292

288-
O Java 8 traz a classe `DateTimeFormatter`, que possui várias formas de formatar e transformar `Data/Hora` em `String`, e vice-versa.
293+
O Java 8 traz a classe `DateTimeFormatter` que possui várias formas de formatar e transformar `Data/Hora` em `String`, e vice-versa.
289294

290295
. É possível obter instâncias predefinidas de `DateTimeFormatter`, que representam formatos `ISO` ou `RFC`.
291296
+
@@ -353,10 +358,10 @@ include::{section-java-package}/formats/datetimeformatter/DateTimeFormatter_Cust
353358
06 08 19 - 11 40 00
354359
----
355360
+
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.
361+
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.
357362
+
358363

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`.
364+
. Não é possível formatar uma Data/Hora caso o objeto fornecido não tenha os campos necessários. Um exemplo seria tentar apresentar a Data e fornecer um `LocalTime`.
360365
+
361366
[source,java,indent=0]
362367
.{java-package}/formats/datetimeformatter/DateTimeFormatter_Error.java

src/org/j6toj8/localization/formats/datetimeformatter/DateTimeFormatter_Error.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ public static void main(String[] args) {
1515

1616
System.out.println(localDate.format(DateTimeFormatter.ISO_LOCAL_DATE));
1717
System.out.println(localDT.format(DateTimeFormatter.ISO_LOCAL_DATE));
18-
System.out.println(localTime.format(DateTimeFormatter.ISO_LOCAL_DATE)); // lança exceção pois não possui campos de
19-
// data
18+
19+
// lança exceção pois não possui campos de data
20+
System.out.println(localTime.format(DateTimeFormatter.ISO_LOCAL_DATE));
2021
// end::code[]
2122
}
2223
}

src/org/j6toj8/localization/formats/decimalformat/DecimalFormat_Instance.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ public static void main(String[] args) {
3232
DecimalFormat instance6 = new DecimalFormat("000000.000");
3333
System.out.println("000000.000: " + instance6.format(d));
3434

35-
// omite todas as posições vazias, não utiliza separador e não apresenta casas
36-
// decimais
35+
// omite todas as posições vazias, não utiliza separador e não apresenta casas decimais
3736
DecimalFormat instance7 = new DecimalFormat("###");
3837
System.out.println("###: " + instance7.format(d));
3938
// end::code[]

0 commit comments

Comments
 (0)