HackerRank #8 | Date and Time | 🇧🇷
Tags: hackerrank, java, date, calendar
Published: 2021-08-25 16:15:44

## Date And Time

[Esse exercício](https://www.hackerrank.com/challenges/java-date-and-time/problem) 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:

<code>
month = 8
day = 05
year = 2015
</code>

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


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

<code>
class Result {

    public static String findDay(int month, int day, int year) {
    }
</code>

* Primeiro, criei uma variável <code> calendário </code> 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 <code> month </code>, 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:

<code>
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();
    }

}
</code>

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

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

- [HackerRank #6 | Scanner e End-of-file](https://dev.to/beatrizmaciel/hackerrank-6-scanner-e-endoffile-462c)
- [HackerRank #7 | Int to String / String to Int](https://dev.to/beatrizmaciel/hackerrank-7-int-em-string-e-vice-versa-4n1e)
- HackerRank #8 | Date and Time
- [HackerRank #9 | Static Initializer Block](https://dev.to/beatrizmaciel/hackerrank-9-static-initializer-block-48ha)
- [HackerRank #10 | Currency Formatter](https://dev.to/beatrizmaciel/hackerrank-10-currency-formatter-22oj)
- [HackerRank #11 | DataTypes](https://dev.to/beatrizmaciel/hackerrank-11-datatypes-2e9h)
- [HackerRank #12 | Strings Introduction](https://dev.to/beatrizmaciel/hackerrank-12-strings-introduction-2d1n)
- [HackerRank #13 | Substring Comparisons](https://dev.to/beatrizmaciel/hackerrank-13-substring-comparisons-57ha)
- [HackerRank #14 | Abstract Class](https://dev.to/beatrizmaciel/hackerrank-14-abstract-class-3h5d)
- [HackerRank #18 | BigInteger](https://dev.to/beatrizmaciel/hackerrank-18-biginteger-4jad)
- [HackerRank #19 | Loops II](https://dev.to/beatrizmaciel/hackerrank-19-loops-ii-385n)
- [HackerRank #20 | String Reverse](https://dev.to/beatrizmaciel/hackerrank-20-string-reverse-nec)
- [HackerRank #23 | Instanceof keyword](https://dev.to/beatrizmaciel/hackerrank-23-instanceof-keyword-3lh6)
- [HackerRank #26 | Generics](https://dev.to/beatrizmaciel/hackerrank-26-generics-55p8)
- [HackerRank #27 | 1D Array](https://dev.to/beatrizmaciel/hackerrank-27-1d-array-5f80)
- [HackerRank #28 | Anagrams](https://dev.to/beatrizmaciel/hackerrank-28-anagrams-boi)
- [HackerRank #33 | Arraylist](https://dev.to/beatrizmaciel/hackerrank-33-arraylist-2lj1)
- [HackerRank #34 | Exception Handling Try / Catch](https://dev.to/beatrizmaciel/hackerrank-34-exception-handling-try-catch-144f)
- [HackerRank #36 | Exception Handling](https://dev.to/beatrizmaciel/hackerrank-35-exception-handling-44e)
- [HackerRank #37 | List](https://dev.to/beatrizmaciel/hackerrank-37-list-4gmj)
- [HackerRank #38 | SubArray](https://dev.to/beatrizmaciel/hackerrank-38-subarray-1693)
- [HackerRank #39 | HashSet](https://dev.to/beatrizmaciel/hackerrank-39-hashset-3jb3)
- [HackerRank #40 | Java Dequeue](https://dev.to/beatrizmaciel/hackerrank-40-java-dequeue--497h)