porównanie dat

ED
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 14 lat
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??:|

dark_astray
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 14 lat
0

struktura DataTime.
i ewentualne metody statyczne jak Parse.

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


ED
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 14 lat
0

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

Kopiuj
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.00:00:00:}
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

ED
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 14 lat
0

ok juz mam

Kopiuj
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 :/

Wronq
  • Rejestracja:około 17 lat
  • Ostatnio:prawie 11 lat
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


Some people see things as they are, and say "why?". I dream things that never were and say "why not?".
reichel
  • Rejestracja:ponad 20 lat
  • Ostatnio:około 14 lat
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)


ED
  • Rejestracja:prawie 17 lat
  • Ostatnio:ponad 14 lat
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.