1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Calcular nº da semana ??

Discussão em 'Programação' iniciada por mad marshall, 28 de Agosto de 2007. (Respostas: 13; Visualizações: 3762)

  1. mad marshall

    mad marshall Power Member

    Boas, gostaria que me ajudassem no seguinte.

    gostaria de saber como posso calcular a semana, tipo :
    hoje é dia 28 de Ago de 2007, que corresponde à semana 35, e eu queria mostrar o nº da semana numa label ou textbox, sem ser com o Monthcalendar.

    Obrigado

    Cumps
     
  2. BladeRunner2019

    BladeRunner2019 Power Member

    Qual a linguagem que estás a usar já agora???
     
  3. Scarecrow

    Scarecrow Power Member

    Se não existir uma função que retorne esse valor, calculas o número de dias e divides por 7 :P
     
  4. mad marshall

    mad marshall Power Member

    Peço desculpa, em Vb 2005.
     
  5. Isso se as semanas forem numeradas de 0 a 52, o que não é o habitual. É preciso somar 1 para obter um valor entre 1 e 53.
     
  6. TheRieper

    TheRieper Power Member

    e tens que pedir o resultado inteiro, não o arredondado senão caso não tenha passado 1 semana completa obterás um valor decimal, e isso não serve.

    EX: nsemana = int(dias/7)
    Abraço
     
  7. HecKel

    HecKel The WORM

    Isso não é assim tão linear.

    E quando o 1 de Janeiro é a uma quinta ou uma sexta? O dia 6 já é na semana 2 e no entanto 6/7 < 1.

    Há mais coisas a considerar no que respeita a saber o número da semana, sinceramente não sei como se faz, mas tenho em atenção a estes pormenores.

    HecKel
     
  8. Tuaregue

    Tuaregue Power Member

    se definires a variável com data, acho que tens por lá um método próprio que retorna o número da semana.

    label1.text=var_data.WeekOfYear

    pesquisa bem os métodos que cada tipo de variável tem, o Google tb é teu amigo.

    edit: já não pego no .net à mt tempo, mas acho que era assim.
     
  9. TheRieper

    TheRieper Power Member

    Tens razão Heckel mas isso já requer um código mais complexo e acho que ele não tenciona fazer algo assim. Penso eu.

    Eu encontro várias coisas mas para dia do ano, dia da semana, mes, etc. nada para número da semana.. De qualquer das maneiras deixo aqui o link, não vas tu procurar melhor no site e encontrar. eu a esta hora já nao leio nada vou xonar:P
    http://www.macoratti.net/vbn5_udh.htm
    Abraço
     
    Última edição: 29 de Agosto de 2007
  10. Kamolas

    Kamolas Power Member

  11. AragTey

    AragTey Power Member

    Boas,

    não me parece que seja assim tão complicado. Penso que a melhor maneira será partindo do dia de hoje:

    Qua 29 Agosto 2007

    na à iteração acertas os dias ao domingo tipo se é estamos numa quarta subtrais 3 dias ficas com 26 Agosto 2007. Nas iterações seguinto vai subtraindo sempre 7 até que seja menor que 1 ai mudaste de semana ou de mes (nesta altura tens de fazer o teste necessário).
    Quando o numero de dia e numero de meses for menos que 1 entao chegaste ao inicio do ano e ai terás o numero de semanas.

    Em VB n sei como se fará isso....se optares por C\C++ posso dar uma luzitas ;).
     
  12. HecKel

    HecKel The WORM

    Eish, não há nada matematicamente mais simples? Isso é uma beca recursivo demais...

    Já agora, salvo erro, a primeira semana do ano começa na semana do dia 1 de Janeiro, se este for a uma quinta (por exemplo), os dias 27, 28, 29, 31 de Dezembro também são na semana 1....

    Isto não me parece um problema complicado, mas também não é assim tão trivial, existe muita coisa a ter em conta.

    HecKel
     
  13. AragTey

    AragTey Power Member

    Provavelmente poderá haver uma solução mais optimizada, mas penso que neste caso o tempo que se irá ganhar será minimo e imperceptivel, até porque na pior das hipoteses terás 53 iterações.

    Mas são opções de quem faz o código consoante o tempo disponivel que tenham para tal tarefa, eu apenas sugeri como fazer sem pensar muito no assunto...admito a minha preguiça mas na minha opinião o problema não exige mais do que isso... :lol:
     
  14. Kamolas

    Kamolas Power Member

    Pessoal

    Existe uma norma ISO para efectuar esse calculo. nos links que deixei está a explicação da norma e o algoritmo a seguir para efectuar esse calculo.

    Fiquem bem
     

Partilhar esta Página