DEV Community

Beatriz Maciel
Beatriz Maciel

Posted on • Updated 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:

Discussion (0)