Jump to content
v1tal1ty

Algoritmo de datetime

Recommended Posts

v1tal1ty

Ora boa bom dia, tenho encontrado uma certa dificuldade com uma funçao.

O que a funçao me faz é percorrer linha a linha de um ficheiro de texto, de seguida obtenho uma parte de linha que me representa uma data.

e tenho que obter os registos que tem la data de amanha ate nos proximos 5 dias.

        private void _5dayInfront_Load(object sender, EventArgs e)
        {
            
            string hoje = DateTime.Today.ToString("dd/MM");
            DateTime DataHoje = new DateTime();
            DataHoje = DateTime.ParseExact(hoje, "dd/MM", null);

            string linha;
            int cor = 0;
            for(int x = 1; x < 6; x++)
            {
                System.IO.StreamReader file = new System.IO.StreamReader("alunos.txt");
                while ((linha = file.ReadLine()) != null)
                {
                    string[] nome = linha.Split('|');// dividir nome/data/email
                    DateTime DataNasc = new DateTime();
                    DataNasc = DateTime.ParseExact(nome[1], "dd/MM", null);

                    if (DataHoje.Month == DataNasc.Month)
                    {
                        
                        DataHoje = DataHoje.AddDays(1);
                        if(DataHoje.Day == DataNasc.Day)
                        {
                            cor++;
                            ListViewItem reg = new ListViewItem();
                            reg.Text = DataHoje.ToString();
                            ListViewItem.ListViewSubItem data = new ListViewItem.ListViewSubItem();
                            data.Text = nome[1];
                            reg.SubItems.Add(data);
                            LVreg.Items.Add(reg);
                        }
                    }
                   
                }
                
            }

        }

Tenho dificuldade com a propria logica :S

Share this post


Link to post
Share on other sites
killercode

bom não percebi bem a pergunta, mas pelo que consta pretendes selecionar todos os q fazem anos nos proximos 5 dias:

substitui:

if(DataHoje.Day == DataNasc.Day)

por isto:

if(DataNasc.Day >= DataHoje.Day && DataNasc.Day < DataHoje.AddDays(5))

Share this post


Link to post
Share on other sites
v1tal1ty

Ta certo, so que depois tinha que ordenar por isso... nao me dava jeito muito para fazer desta forma.

esta aqui a questao ja resolvida ;)

        private void _5dayInfront_Load(object sender, EventArgs e)
        {
            
            string hoje = DateTime.Today.ToString("dd/MM");
            DateTime DataHoje = new DateTime();
            DataHoje = DateTime.ParseExact(hoje, "dd/MM", null);
            int[] x = new int[6] { 0, 0, 0, 0, 0, 0};
            string linha;
            
            for(int idx = 0; idx < 6 ; idx++)
            {
                int cor = 0;
                System.IO.StreamReader file = new System.IO.StreamReader("alunos.txt");
                while ((linha = file.ReadLine()) != null)
                {
                    if (linha == "")
                    {
                        break;
                    }
                    string[] nome = linha.Split('|');// dividir nome/data/email
                    DateTime DataNasc = new DateTime();
                    DataNasc = DateTime.ParseExact(nome[1], "dd/MM", null);
                    DateTime data5dias = DataHoje.AddDays(5);
               
                    if(DataNasc == DataHoje.AddDays(idx))
                    {
                        cor++;
                        x[idx] = cor;
                    }
                }
            }
            escrever(x);

        }
        public void escrever(int[] ocorencias)
        {
            int x;
            string hoje = DateTime.Today.ToString("dd/MM");
            DateTime DataHoje = new DateTime();
            DataHoje = DateTime.ParseExact(hoje, "dd/MM", null);
            for (x = 0; x < 6; x++)
            {
                ListViewItem hojes = new ListViewItem();
                hojes.Text = DataHoje.AddDays(x).ToString();
                ListViewItem.ListViewSubItem num = new ListViewItem.ListViewSubItem();
                num.Text = ocorencias[x].ToString();
                hojes.SubItems.Add(num);
                
                LVreg.Items.Add(hojes);
            }
        }

se alguem tem alguma sugestao pode me dar, vale sempre a pena melhorar :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.