NetRunner: Java Mastery Guide 1.0 Help

Formatação de Datas

DateTimeFormatter

Padrões Básicos

// Formatadores predefinidos DateTimeFormatter isoDate = DateTimeFormatter.ISO_DATE; DateTimeFormatter isoTime = DateTimeFormatter.ISO_TIME; DateTimeFormatter isoDateTime = DateTimeFormatter.ISO_DATE_TIME; // Formatação básica LocalDate date = LocalDate.now(); String formatted = date.format(isoDate); // 2024-01-20

Padrões Customizados

// Criando formatadores customizados DateTimeFormatter custom = DateTimeFormatter.ofPattern("dd/MM/yyyy"); DateTimeFormatter withTime = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"); // Aplicando formatação LocalDateTime now = LocalDateTime.now(); String result = now.format(custom); // 20/01/2024

Localização

Formatação por Locale

// Formatadores localizados DateTimeFormatter brFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy") .withLocale(new Locale("pt", "BR")); DateTimeFormatter usFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy") .withLocale(Locale.US);

Nomes Localizados

// Meses e dias da semana DateTimeFormatter monthFormat = DateTimeFormatter.ofPattern("MMMM", new Locale("pt", "BR")); String mes = monthFormat.format(LocalDate.now()); // "janeiro"

Parsing

Conversão de Strings

// Parse básico String dateStr = "2024-01-20"; LocalDate date = LocalDate.parse(dateStr); // Parse com formato específico DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); LocalDate customDate = LocalDate.parse("20/01/2024", formatter);

Tratamento de Erros

try { LocalDate date = LocalDate.parse("data-inválida"); } catch (DateTimeParseException e) { System.err.println("Formato de data inválido"); }

Casos Especiais

Zonas de Tempo

// Formatação com timezone ZonedDateTime zdt = ZonedDateTime.now(); DateTimeFormatter zoneFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm z"); String withZone = zdt.format(zoneFormat); // "20/01/2024 15:30 BRT"

Períodos e Durações

// Formatando períodos Period period = Period.between( LocalDate.of(2023, 1, 1), LocalDate.of(2024, 1, 1) ); // P1Y (ISO-8601) // Formatando durações Duration duration = Duration.between( LocalDateTime.now(), LocalDateTime.now().plusHours(2) ); // PT2H (ISO-8601)

Boas Práticas

Constantes de Formato

public class DateUtils { public static final DateTimeFormatter BR_DATE = DateTimeFormatter.ofPattern("dd/MM/yyyy"); public static final DateTimeFormatter BR_DATE_TIME = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm"); }

Validação

public boolean isValidDate(String dateStr, DateTimeFormatter formatter) { try { LocalDate.parse(dateStr, formatter); return true; } catch (DateTimeParseException e) { return false; } }

Próximos Passos

26 June 2025