DEV Community

Beatriz Maciel
Beatriz Maciel

Posted on • Edited on

HackerRank #8 | Date and Time | 🇧🇷

Date And Time

Esse exercício propõe usar a classe Calendar para construir uma saída com apenas o dia da semana a partir de um input de mês, dias e ano (nessa ordem).

Exemplo:

 month = 8 day = 05 year = 2015 
Enter fullscreen mode Exit fullscreen mode

Saída: WEDNESDAY // (em letras maiúsculas)

O problema começa com o seguinte código:

 class Result { public static String findDay(int month, int day, int year) { } 
Enter fullscreen mode Exit fullscreen mode
  • Primeiro, criei uma variável calendário que pega o método .getInstance();

É preciso usar o método estático .getInstance() porque a classe Calendar é abstrata e não pode ser instanciada.

  • Depois, usando os setters, definimos mês, dia e ano.

Os meses do ano estão num array de 0 a 11, por isso não dá pra colocar simplesmente month , sendo necessário botar -1. Dessa forma, se o input for 2 (número do mês de fevereiro normalmente), lerá na verdade -1 + 2, dando 1 (fevereiro, no array de month).

  • Por fim, retornamos o calendário junto do método .getDisplayName(). Esse método exige três parâmetros: (field, style, locale). O field são os campos necessários (DAY_OF_WEEK, MONTH, etc); o style é o parâmetro (.LONG, .SHORT, etc); e locale é o local. Como a saída precisa ser em inglês, precisamos colocar .US ou .CANADA, não funciona .GERMANY ou .FRANCE.

  • E o .toUpperCase() porque o problema pedia para estar em maiúsculo.

O resultado é o seguinte:

 class Result { public static String findDay(int month, int day, int year) { Calendar calendario = Calendar.getInstance(); calendario.set(Calendar.MONTH, month-1); calendario.set(Calendar.DAY_OF_MONTH, day); calendario.set(Calendar.YEAR, year); return calendario.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US).toUpperCase(); } } 
Enter fullscreen mode Exit fullscreen mode

============

Essa publicação faz parte de uma série de exercícios resolvidos em Java no HackerRank. Acesse a série completa:

Top comments (0)