porównanie dat

0

Witam mam problem porównaniem dat laduje do DataGridView date z bazy i chce ja porównać z obecna z tym ze chce sprawdzić czy jest wieksza a nie czy równa i teraz neiwime jak ja skonwertowac
prubowalem porwonywac z MonthCalendar i nici,
trzeba byc to jakos na inta przerobic ale jak??:|

0

struktura DataTime.
i ewentualne metody statyczne jak Parse.

DataTime ma chyba operatory jak > = < więc można porównywać obiekty tego typu

0

no nie mozna uzywac < <= >= > tip ale doszedlemd o czegos takiego

DateTime date1 = new DateTime();
             DateTime date2 = new DateTime();

             
             

           
            date2 = monthCalendar2.TodayDate;

            


            for (int i = 0;i< dgv_wizy.Rows.Count; i++)
            {
                date1 = System.DateTime.Parse(dgv_wizy[3, i].Value.ToString());
                TimeSpan roznica = date1 - date2;

                if (System.Int32.Parse(roznica.ToString()) > 0)
                {

                }
                else
                {
                    dgv_wizy[3, i].Style.BackColor = Color.Red;
                }
               
            }

teraz problem jest taki ze roznica ma wartosc {x.0000:}
x to jest szukana roznica a te zara sa od czasu chyba bynajmniej jak sie pozbyc tych zer zeby spokojnie mozna to przerobic na inta

0

ok juz mam

date1 = System.DateTime.Parse(dgv_wizy[3, i].Value.ToString());
                TimeSpan roznica = date1 - date2;
                string s;
                s = roznica.TotalDays.ToString();



                if (System.Int32.Parse(s) < 0)
                {

                }
                else
                {
                    dgv_wizy[3, i].Style.BackColor = Color.Red;
                }
               
            }

z tym ze nie zmienia mi sie color komurki :/

0

Mi się wydaje, że jeżeli odejmiesz 'większą' datę od 'mniejszej' to wynik będzie na minusie. Jeżeli dobrze rozumiem, to chodzi Ci tylko o to, czy jest większa czy nie. Więc wystarczy roznica.ToString().Contains("-") i jeżeli ma minusik, to data dzisiejsza jest większa. BTW aktualną datę łatwiej jest pobrać tak: date2 = DateTime.Now. Przynajmniej tak mi się wydaje :)

Pozdrawiam, Wronq

0

A ktos z Panow/Pan odwiedzil MSDN ?

CompareTo -> -1,0,1

I jesli wczytuje sie do DGV z bazy danych pole okreslajace czas to powinno ono przyjac typ DateTime, wiec Parse to zbedne zuzycie czasu (wraz z ToString)

0

a ma ktos pomysl dlaczego nie zmienia sie color tej komurki :/

0

Data musi byc przechowywana jako timestamp. Konkretniej jako wartosc unsigned. Wielkosc nie ma znaczenia, zazwyczaj jest to 4 bajty, ale moze byc i 16+.
Wiec po prostu odejmujesz jedno od drugiego, i wynik jest roznica. jesli nastapilo przeniesienie (carry), pierwsza < druga. Jesli zero, to sa rowne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1