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

Dias da semana C# - [RESOLVIDO]

Discussão em 'Programação' iniciada por candycane, 25 de Setembro de 2008. (Respostas: 5; Visualizações: 7076)

  1. candycane

    candycane Power Member

    Boa tarde

    Como é que posso saber quais são os dias de uma semana?

    Por exemplo:
    quero saber os dias da semana 41 de 2008, e devolve-me os dias :

    segunda - 6/11/08,
    terça - 7/11/08,
    quarta - 8/11/08,
    quinta - 9/11/08,
    sexta - 10/11/08,
    sabado - 11/11/08
    domingo - 12/11/08


    alguém pode ajudar-me?
     
    Última edição: 26 de Setembro de 2008
  2. silvino

    silvino Power Member

    Olá,

    O meu forte não é C, posso até estar enganado, mas pelo que procurei esta função deve servir.
    A função deve ser chamada da seguinte forma,

    intdayOfWeek( int nDate
    int type = 1 )

    nDate é a data em questão,
    type é o tipo de dados que devolve.

    Neste caso deves chamar com o tipo 0 para que devolva os dias de segunda a domingo,

    Mais uma vez como o meu forte não é C# , não testei a função, está aqui tal e qual como a
    encontrei, visita o site para mais informação;

    http://www.codecogs.com/d-ox/units/date/dayofweek.php

    Código dayOfWeek
    Código:
     		// GNU General Public License Agreement
    // Copyright (C) 2004-2007 CodeCogs, Zyba Ltd, Broadwood, Holford, TA5 1DU, England.
    //
    // This program is free software; you can redistribute it and/or modify it under
    // the terms of the GNU General Public License as published by CodeCogs. 
    // You must retain a copy of this licence in all copies. 
    //
    // This program is distributed in the hope that it will be useful, but WITHOUT ANY
    // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
    // PARTICULAR PURPOSE. See the GNU General Public License for more details.
    // ---------------------------------------------------------------------------------inline int dayOfWeek(int nDate, int type=1)
    {
      assert(type>=1 && type<=3);
      assert(nDate>=-31738);
      
      return (nDate +1 - (type>=2))%7 + (type<=2);
    }
    
     
  3. alfinete

    alfinete Power Member

    Código:
    /*DANOS O DIA DA SEMANA E O MES REFERENTE A UMA DATA*/
                        function data_f(mes,dia,ano)
                        {
                         var descricao;
                         var datat= mes +'-'+dia+'-'+ano;//string da data
                         var dataf= new Date(datat); // converte string datat em tipo data
                        
                         var nome_mes = new Array(11);
                         
                            nome_mes[0]="Janeiro";
                            nome_mes[1]="Fevereiro";
                            nome_mes[2]="Marco";
                            nome_mes[3]="Abril";
                            nome_mes[4]="Maio";
                            nome_mes[5]="Junho";
                            nome_mes[6]="Julho";
                            nome_mes[7]="Agosto";
                            nome_mes[8]="Setembro";
                            nome_mes[9]="Outubro";
                            nome_mes[10]="Novembro";
                            nome_mes[11]="Dezembro";
                        
                         var nome_dia = new Array(7);                    
                            
                            nome_dia[0]="Domingo";
                            nome_dia[1]="Segunda-feira";
                            nome_dia[2]="Terca-feira";
                            nome_dia[3]="Quarta-feira";
                            nome_dia[4]="Quinta-feira";
                            nome_dia[5]="Sexta-feira";
                            nome_dia[6]="Sabado";
                
                        
                         descricao =  nome_dia[dataf.getDay()]+' ,'+ dia +' de '+ nome_mes[dataf.getMonth()] +' de '+ dataf.getYear() ;
                         return descricao;
                        }    
    
    
    
    
    este code é java script

    mas em c# fazes data.day , data.month (este dois devovem inteiros no caso do day entre o e 7, e do month entre 1 e 12), e data.year(devolve um inteiro do ano).

    é so alterares espero que tenha ajudado
     
  4. spastikman

    spastikman Banido

    Não tenho a certeza, mas isso não deve funcionar. ou começas os arrays em 1 (e não 0) ou então tens de somar mais uma unidade quando vais mostrar o resultado.
     
  5. alfinete

    alfinete Power Member

    Código:
     protected void calcula_Click(object sender, EventArgs e)
            {
                string dia = txtdata.Text.Trim().Substring(0, 2);
                string mes = txtdata.Text.Trim().Substring(3, 2);
                string ano = txtdata.Text.Trim().Substring(6, 4);
                
                lblres.Text = da_dia(da_data(ano,dia,mes))+" ,"+dia+" de " +  da_mes(mes) + " de " +ano;  
            }
    
    
            //constroi a data
            private DateTime da_data (string ano, string dia, string mes)
            {
                string data =dia+"-"+mes+"-"+ano;
                DateTime dta= Convert.ToDateTime(data);
                return dta;
            }
    
            // danos o dia da semana
            private string da_dia(DateTime data)
            {
                //DateTime data= da_data(ano, mes, dia);
                int numdia = Convert.ToInt32(data.DayOfWeek)  ; //int referente ao dia
                string[] nome_dia = new string[7];
                string nome_mes = "";
    
                nome_dia[0] = "Domingo";
                nome_dia[1] = "Segunda-feira";
                nome_dia[2] = "Terca-feira";
                nome_dia[3] = "Quarta-feira";
                nome_dia[4] = "Quinta-feira";
                nome_dia[5] = "Sexta-feira";
                nome_dia[6] = "Sabado";
    
                nome_mes = nome_dia[numdia].ToString();
    
                return nome_mes; 
            
            }
    
    
    
            // danos o mes do ano
            private string da_mes(string mes)
            {
                int nummes;
                // ve se o numero do mes tem um ou 2 digitos
                if (mes.Length > 1)
                    nummes = int.Parse(mes);
                else
                    nummes = int.Parse(mes.Substring(1, 1));
     
                string[] nome_mes = new string[13];
              
                nome_mes[0] = "";
                nome_mes[1] = "Janeiro";
                nome_mes[2] = "Fevereiro";
                nome_mes[3] = "Marco";
                nome_mes[4] = "Abril";
                nome_mes[5] = "Maio";
                nome_mes[6] = "Junho";
                nome_mes[7] = "Julho";
                nome_mes[8] = "Agosto";
                nome_mes[9] = "Setembro";
                nome_mes[10] = "Outubro";
                nome_mes[11] = "Novembro";
                nome_mes[12] = "Dezembro";
    
                string nomemes = nome_mes[nummes];
                return nomemes ;
                
            }
    
    

    isto em c# funciona de certeza

    estive agra a fazer e bobeca bem

    tens é de validar as datas senão rebenta caso o dia não exista e o mes

    testa ai

    tens de criar uma caixa de texto para inserir a data , um botão para calculala, e uma label para o resultado

    a solução que dei antes em java script fuinciona na boa
     
  6. candycane

    candycane Power Member

    Eu consegui resolver o problema da seguinte forma:

    Código:
    
    private void DataActual(string semana, string ano)
    {
                
                DateTime data = new DateTime(Int32.Parse(ano), 1, 1);
    
                int weekNumber = int.Parse(semana);
                
                int days = (weekNumber - 1) * 7;
    
                DateTime dt1 = data.AddDays(days);
                
                DayOfWeek dow = dt1.DayOfWeek;
    
           
                DateTime startDateOfWeek = dt1.AddDays(-(int)dow);
                DateTime seg = startDateOfWeek.AddDays(1);
                DateTime sex = startDateOfWeek.AddDays(5);
    
                txtDe.Text = seg.ToShortDateString();
                txtA.Text = sex.ToShortDateString();
                txtDataActividade.Text = seg.ToShortDateString();
    
    
    }
    
    
    Obrigada a todos pela ajuda :)
     

Partilhar esta Página