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:

Top comments (0)

16 Libraries You Should Know as a React Developer

Being a modern React developer is not about knowing just React itself. To stay competitive, it is highly recommended to explore the whole ecosystem. This article contains some of the most useful React component libraries to speed up your developer workflow.