Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Porovnání dvou datumů v C#

Ahoj, potřebuji porovnat dva datumy. Jeden datum uložený porovnávám se současným datumem zajímá měj jen číslo dnu, takže jsem si převedl datumy do stringu a rozkládám je. Pak už jen přes if porovnám jestli dny mají stejné číslo nebo ne. Jenže když si v messageboxu nechám zobrazit ten jeden den, tak se mi otevřou tři messageboxy. Jeden s číslem dnu, další s číslem měsíce a třetí s rokem. Poradíte mi jak to opravit ?
Novák Martin

 //vypocet uloženeho data
            datumprepocet = Class1.datum;
            foreach (string dat in datumprepocet.Split('.'))
            {
                string day = (dat);
                string moon = (dat);
                string year = (dat);

                den = Convert.ToInt32(day);
                mesic = Convert.ToInt32(moon);
                rok = Convert.ToInt32(year);
            }
            // vypocet současného data
            datumted = DateTime.Now.Date.ToString("d/M/yyyy");
            foreach (string datted in datumted.Split('.'))
            {
                string day1 = (datted);
                string moon1 = (datted);
                string year1 = (datted);

                den1 = Convert.ToInt32(day1);
                mesic1 = Convert.ToInt32(moon1);
                rok1 = Convert.ToInt32(year1);
            }

            //porovnání dnu
            if (den != den1)
            {              
                dnesnilogin = false;
            }
            else
            {
                dnesnilogin = true;
            }
Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
to ti aj funguje? uplne zbytocne riesis blbosti so stringom a splitom. tento riadok nahradi cele to…
wam_Spider007 23.02.2016 22:24
wam_Spider007
Tuhle metodu nás učili ve škole. Proto to to tak mám :). Teď jsem si uvědomil, ta proměnná datum je…
Olus 23.02.2016 22:46
Olus
Na to existuje DateTime.TryParse nebo DateTime.TryParseExact... ;-) var now = DateTime.Now; const s… poslední
ws79 29.02.2016 19:23
ws79

to ti aj funguje? uplne zbytocne riesis blbosti so stringom a splitom.
tento riadok nahradi cele to co si tu napisal

bool dnesnylogin = Class1.datum.Day == DateTime.Now.Day

Preco mas 3 message boxy neviem, ten kus kodu ti tu chyba, ale tipujem, ze zas tam mas nejaky pekelny foreach

Tuhle metodu nás učili ve škole. Proto to to tak mám :). Teď jsem si uvědomil, ta proměnná datum je ve stringu, tak už to není brané jako datum ale jako text, takže tam nejde napsat .Day.
No já zkoušel co je v té proměnné "den" (jaké číslo je tam) a ono mi to otevřelo tři message boxy.
Děkuji za radu

Na to existuje DateTime.TryParse nebo DateTime.TryParseExact... ;-)

var now = DateTime.Now;
const string history = "25. 5. 1999";
const string historyEn = "1/11/1999";

DateTime historyDateTime;
DateTime historyDateTimeEn;

Console.WriteLine(DateTime.TryParse(history, out historyDateTime)
    ? $"Dnešní den: {now.Day}, historický den: {historyDateTime.Day}"
    : "Převod textu na datum se nezdařil!");


string[] formats = { "MM/dd/yyyy", "M/dd/yyyy" };
Console.WriteLine(DateTime.TryParseExact(historyEn,formats, new CultureInfo("en-US"), DateTimeStyles.None, out historyDateTimeEn)
    ? $"EN - Dnešní den: {now.Day}, historický den: {historyDateTimeEn.Day}"
    : "Převod textu na datum se nezdařil!");

Zpět do poradny Odpovědět na původní otázku Nahoru