quinta-feira, 6 de agosto de 2015
sábado, 25 de julho de 2015
Um pouco mais de datas no js
Outras funcionalidades interessantes com datas são:
1) calcular a diferença entre duas datas;
2) data uma determinada data, adicionar um número inteiro de 'DateParts'.
Para a primeira hipótese, todos os casos reais com os quais me deparei - e foram bem poucos - tratava da diferença em dias. Vejam a função abaixo que faz esse cálculo:
function diferencaEmDias(data1, data2) {
var dif =
Date.UTC(data1.getYear(), data1.getMonth(), data1.getDate(), 0, 0, 0)
- Date.UTC(data2.getYear(), data2.getMonth(), data2.getDate(), 0, 0, 0);
return Math.abs((dif / 1000 / 60 / 60 / 24));
}
Caso necessitem de algo similar para outra DatePart como horas, minutos e segundos, basta adaptar o código no retorno. O nível mais detalhado seria a diferença em milissegundos.
function adicionarDias(data, dias) {
return new Date(data.getTime() + (dias * 24 * 60 * 60 * 1000));
}
O mesmo vale para esse caso. Basta adaptar a função para obter outro níveis de retorno.
1) calcular a diferença entre duas datas;
2) data uma determinada data, adicionar um número inteiro de 'DateParts'.
Para a primeira hipótese, todos os casos reais com os quais me deparei - e foram bem poucos - tratava da diferença em dias. Vejam a função abaixo que faz esse cálculo:
function diferencaEmDias(data1, data2) {
var dif =
Date.UTC(data1.getYear(), data1.getMonth(), data1.getDate(), 0, 0, 0)
- Date.UTC(data2.getYear(), data2.getMonth(), data2.getDate(), 0, 0, 0);
return Math.abs((dif / 1000 / 60 / 60 / 24));
}
Caso necessitem de algo similar para outra DatePart como horas, minutos e segundos, basta adaptar o código no retorno. O nível mais detalhado seria a diferença em milissegundos.
function adicionarDias(data, dias) {
return new Date(data.getTime() + (dias * 24 * 60 * 60 * 1000));
}
O mesmo vale para esse caso. Basta adaptar a função para obter outro níveis de retorno.
JS: Igual pra caralho!
Alguns de vocês já devem ter se deparado com um código que usa ou com a necessidade de uma comparação um pouco diferente no JavaScript. O operador "===", carinhosamente apelidado pelos meus colegas de trabalho de "igual-pra-caralho".
Então, vamos lá. Segue um pouco mais sobre a diferença entre os 3 operadores da mesma família:
= (Igual) É o operador de atribuição, usado para definir valores para propriedades ou variáveis;
== (Igual-igual) É o operador lógico que seria melhor definido como "equivalente". Ele avalia se o valor declarado ou de uma variável/propriedade é equivalente a um outro.
=== (Igual-pra-caralho) É o operador lógico que compara valor e tipo do dado.
A confusão está justamente aí. Quando usar um ou outro?
É importante lembrar que o JS não é uma linguagem fortemente tipada, então essa é justamente a razão de existir desse operador.
Eis um exemplo onde a utilização desses comparadores pode causar diferença:
function(){
var texto = "";
var numero = 0;
if (texto == numero){
alert("Esse código será executado");
}
if (texto === numero){
alert("Esse não será...");
}
if (numero === "0"){
alert("Esse também não..");
}
if (numero == "0"){
alert("Esse SIM!");
}
}
Por algum motivo, o JS entende que os valores "" para o tipo string e 0 são equivalentes. Como o operador 'Igual-pra-caralho' também verifica o tipo de dados, a verificação fica bem mais direcionada dentro do seu código.
É isso pessoal. Até a próxima!
Então, vamos lá. Segue um pouco mais sobre a diferença entre os 3 operadores da mesma família:
= (Igual) É o operador de atribuição, usado para definir valores para propriedades ou variáveis;
== (Igual-igual) É o operador lógico que seria melhor definido como "equivalente". Ele avalia se o valor declarado ou de uma variável/propriedade é equivalente a um outro.
=== (Igual-pra-caralho) É o operador lógico que compara valor e tipo do dado.
A confusão está justamente aí. Quando usar um ou outro?
É importante lembrar que o JS não é uma linguagem fortemente tipada, então essa é justamente a razão de existir desse operador.
Eis um exemplo onde a utilização desses comparadores pode causar diferença:
function(){
var texto = "";
var numero = 0;
if (texto == numero){
alert("Esse código será executado");
}
if (texto === numero){
alert("Esse não será...");
}
if (numero === "0"){
alert("Esse também não..");
}
if (numero == "0"){
alert("Esse SIM!");
}
}
Por algum motivo, o JS entende que os valores "" para o tipo string e 0 são equivalentes. Como o operador 'Igual-pra-caralho' também verifica o tipo de dados, a verificação fica bem mais direcionada dentro do seu código.
É isso pessoal. Até a próxima!
quinta-feira, 4 de junho de 2015
Dia da semana por extenso em js
A maioria das funções que sinto falta no JS são as de operações com datas e strings. Por exemplo, já precisei identificar por extenso o nome do dia da semana de uma determinada data. Após algumas pesquisas, cheguei ao código abaixo, que atendeu plenamente à minha necessidade [e ainda atende]:
function diaDaSemana(data) {
var dia = data.getDay();
var semana = new Array(6);
semana[0] = 'Domingo';
semana[1] = 'Segunda-Feira';
semana[2] = 'Terça-Feira';
semana[3] = 'Quarta-Feira';
semana[4] = 'Quinta-Feira';
semana[5] = 'Sexta-Feira';
semana[6] = 'Sábado';
return semana[dia];
}
Talvez seja importante mencionar que o parâmetro 'data'deve ser um objeto do tipo Date (jsDate) para que a função getDay faça sentido.
function diaDaSemana(data) {
var dia = data.getDay();
var semana = new Array(6);
semana[0] = 'Domingo';
semana[1] = 'Segunda-Feira';
semana[2] = 'Terça-Feira';
semana[3] = 'Quarta-Feira';
semana[4] = 'Quinta-Feira';
semana[5] = 'Sexta-Feira';
semana[6] = 'Sábado';
return semana[dia];
}
Talvez seja importante mencionar que o parâmetro 'data'deve ser um objeto do tipo Date (jsDate) para que a função getDay faça sentido.
JavaScript e seus mistérios
O JavaScript eh uma ótima ferramenta para desenvolver na web. Poderosa e eficiente, nos dá possibilidades incríveis.
Apesar de o meu contato ter sido recente, já tive a oportunidade de vivenciar diversas situações de erros de script, comportamento anômalo, ou até mesmo dificuldade em codificar algumas operações que são mais simples em outras linguagens.
Esses obstáculos trazem consigo a chance de pesquisar, estudar e entender um pouco mais como esse magnífico script funciona. Boi compartilhar com vocês alguns códigos que podem ser úteis em alguns momentos.
Apesar de o meu contato ter sido recente, já tive a oportunidade de vivenciar diversas situações de erros de script, comportamento anômalo, ou até mesmo dificuldade em codificar algumas operações que são mais simples em outras linguagens.
Esses obstáculos trazem consigo a chance de pesquisar, estudar e entender um pouco mais como esse magnífico script funciona. Boi compartilhar com vocês alguns códigos que podem ser úteis em alguns momentos.
quinta-feira, 28 de maio de 2015
Nossos primeiros passos
Começamos!
Seja bem vindo(a) ao nosso blog! Analistas, Programadores, Webdesigners, Técnicos e Freelancers. Como somos vistos, o "pessoal que mexe com esse negócio de computador". Você que entende de tudo e tem que resolver qualquer problema, que é o McGayver da tecnologia da informação ou algo similar. Esse é o seu lugar!
Não. Não vamos precisar consertar a impressora da vizinha, limpar o seu smartphone da prima ou formatar o seu computador do cara do administrativo. Queremos que os desafios evoluam junto com a gente, e essa fase já superamos. Estamos sempre em busca do problema o qual não consigamos resolver. Mas esse não precisa chegar agora, rs. Primeiro vamos amadurecer um pouco mais.
Aqui poderemos sugerir, praticar, tirar dúvidas e se desenvolver profissionalmente na arte de fazer programa e solucionar [e as vezes criar] problemas.
Parece clichê, mas quanto mais vivemos, mais constatamos que a vida de um(a) programador(a), volta e meia acaba se resumindo em atender aos desejos do cliente, deixá-los satisfeitos e sermos pagos por isso. Somos os literalmente garotos(as) de programa. Cabe o aforismo-superstar: é triste, mas é verdade.
Vamos começar a praticar! É interessante compartilharmos nossas experiências nessa vida de construir soluções e lapidarmos a formação pessoal e profissional.
Estejam a vontade para expor quaisquer temas relacionados a essa nossa área.
Att,
Diego Rafael Oliveira Souza
Bacharel em Sistemas de Informação
Pós-Graduando em Engenharia de Software
¿Estudante de Física?
Assinar:
Comentários (Atom)