Interpretar o codigo abaixo

3 respostas
A

Boa tarde pessoal…e ae , blz.

Pow, eu to iniciando em java agora, e nao consegui interpretar o codigo abaixo…
Principalmente as linhas onde se se verifica se contem hora na string data…Ele ta somando uma hora a mais eh isso?

public String formatDateTime(String data, String delimiter, int from, int to, boolean isTime) {

String newData = null;

String dt = null;

String hr = null;

String day = null;

String month = null;

String year = null;

StringTokenizer tokens = null;

if (data == null)

return “”;

//Verificando se contem hora na string data

if (isTime) {

dt = data.substring(0,data.indexOf(" “));

if (data.indexOf(”.") > 0)

hr = data.substring(data.indexOf(" “) + 1,data.indexOf(”."));

else

hr = data.substring(data.indexOf(" ") + 1);

tokens = new StringTokenizer(dt, delimiter);

}

else {

tokens = new StringTokenizer(data, delimiter);

}

if (tokens.countTokens() > 3)

return null;

/* From <em>/

switch (from) {

case 1:

month = tokens.nextToken();

day = tokens.nextToken();

year = tokens.nextToken();

break;

case 2:

day = tokens.nextToken();

month = tokens.nextToken();

year = tokens.nextToken();

break;

case 3:

year = tokens.nextToken();

month = tokens.nextToken();

day = tokens.nextToken();

break;

}

/</em> To */

switch (to) {

case 1:

newData = month + “/” + day + “/” + year;

break;

case 2:

newData = day + “/” + month + “/” + year;

break;

case 3:

newData = year + “/” + month + “/” + day;

break;

}

if (isTime)

newData += " "+hr;

return newData;

}

}

3 Respostas

Zeed01

Sou novato em Java, mas se entendi o metodo
formatDateTime(String data, String delimiter, int from, int to, boolean isTime)
recebe uma data, contendo hora ou nao, e retorna a mesma data em um formato selecionado atraves dos parametros from e to.

Podendo receber a data no formato “mm/dd/aaaa” (from = 1), “dd/mm/yyyy” (from = 2) ou “aaaa/mm/dd” (from = 3) e retonar em qualquer desses formatos, conforme o paramerto to.

Se a linha que vc disse que esta especialmente em dúvida é:
hr = data.substring(data.indexOf(" “) + 1,data.indexOf(”."));

Ele não esta somando 1 a hora, esta somando 1 a posição da String data onde ele encontrar o " “, ou seja, se vc fornecer
data = “01/01/2001 09:01:01”
data.indexOf(” ") irá retornar 11
11 + 1 = 12
logo no final hr será igual a “09:01:01”.
Nesse passo ele dividiu a string de entrada entre a data e hora.

Bom… acho que é isso.

Um abraço,

cv1

Joga esse codigo fora e usa SimpleDateFormat :wink:

davidpaniz

Quanto a verificação se contem hora na string data é o seguinte: o metodo formatDateTime(String data, String delimiter, int from, int to, boolean isTime) recebe 5 parametros, como vc pode ver na assinatura dele. O ultimo chamado “isTime” é do tipo boolean, ou seja, ele é true ou false.

Para esse tipo de dado (boolean) é possivel fazer um if daquela forma.
if (isTime)” é a mesma coisa que “if (isTime == true)”.

Acho que essa é sua maior dúvida!

A outra coisa que deve ter te confundido é o indexOf. Ele retorna um inteiro com o valor da primeira posição onde ele encontrou a String buscada dentro da outra String. Exemplo:

se vc tem teste = <a href="http://abc.de">abc.de</a>”,

teste.indexOf(".") te retorna  3 (‘a’ é posição 0, ‘b’ é 1, ‘c’ é 2 e ‘.’ é 3);

se fizer teste.indexOf(“a”) te retorna  0 (‘a’ é posição 0);

já teste.indexOf(“z”)  ele retorna -1 pois não encontrou dentro da sua String o valor buscado.

Me desculpem se falei alguma besteira mas também sou iniciante.

Espero ter ajudado.

Criado 9 de abril de 2007
Ultima resposta 10 de abr. de 2007
Respostas 3
Participantes 4