Dias da semana C# - [RESOLVIDO]

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:
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);
}
 
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
 
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

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.
 
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
 
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 :)
 
Back
Topo