Diskuze: Porovnání datumu ve Foreach cyklu - aplikace spadne
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Uvědomuješ si co vůbec děláš? Ty vezmeš datum, převedeš ho na string a pak si ho převedeš znova na datum. Nevím co dělá DateTime.Compare, ale to nemůžeš jednoduše napsat:
ta.Datum > datum
Popřípadě s tou Compare metodou:
DateTime.Compare(ta.Datum, datum);
Ano, uvědomuju. Jak jsi psal, že to mám zkusit jednoduše porovnat, tak to bylo to první co jsem udělal, ale dopadá to stejně. Nejhorší je, že to nevyhodí žádnou vyjímku, ale přímo Global error, takže se nemám čeho chytit...
nefunguje to protoze to spadne na parse (na cem jinem by to taky spadlo ze
pada to tam z duvodu ze tam cpes datum ve spatnem formatu. zalezi na jakem vlakne poustit tu metodu parse protoze ta si bere z aktualniho vlakna Culturu a zkousi to parsovat vuci ni (takze nejspis se pokousis prevest cesky format datumu pomoci anglicke varianty DateTime.Parse).
alternativne to jeste muze spadnout na nullExceptionu to protoze nektery ze stringu je null.
rada: v programu string reprezentuj vzdy strukturou DateTime
Nezkusil sis vypsat, jaké hodnoty se ti to vlastně ve skutečnosti porovnávají?
Jo ty máš to datum ve stringu, tak jsme doma... Btw, celkem si mě pobavil
ještě jsem neviděl volat
na stringu ToString
foreach (Tasks ta in obj)
{
string sPredmet = ta.Predmet;
string sDatum = ta.Datum;
string SPripom = ta.Pripomenuti;
string sZbD = ta.ZbyvaDni;
string sSdileno = ta.Sdileno;
string sSpleneno = ta.Splneno;
int results = DateTime.Compare(ta.Datum, datum);//předpokládám, že ta.Datum je DateTime
if(results > 0)
{
MissTasks.Add(new Tasks(sPredmet, sDatum, sSpleneno, sZbD, SPripom, sSdileno));
}
else
{
myTasks.Add(new Tasks(sPredmet, sDatum, sSpleneno, sZbD, SPripom, sSdileno));
}
}
možná ti pomůže https://msdn.microsoft.com/…vs.110).aspx
nevíme, co je v "datum" Jestli je to DateTime, bude to fungovat. jestli ne, tak
si ho tam ulož, ale jinak než DateTime.Parse(), nebo používej cultures
jinak Jan Vargovský myslím, že se to nedá porovnávat jen pomocí <,
>, ... Už jsem na tom jednou pohořel. Nebo to prostě neumím používat,
no
public static TimeSpan operator -(DateTime d1, DateTime d2);
public static DateTime operator -(DateTime d, TimeSpan t);
public static bool operator !=(DateTime d1, DateTime d2);
public static DateTime operator +(DateTime d, TimeSpan t);
public static bool operator <(DateTime t1, DateTime t2);
public static bool operator <=(DateTime t1, DateTime t2);
public static bool operator ==(DateTime d1, DateTime d2);
public static bool operator >(DateTime t1, DateTime t2);
public static bool operator >=(DateTime t1, DateTime t2);
Spíše to druhé
Tak to padá přesně kvůli tomu jak jsi říkal. Moje datum je ve formátu dd/mm/yyyy a snaží se to parsovat do DateTime EN dd/mm/yyyy hh:mm:ss AM. Nevíte jak bych mohl udělat, aby to šlo přímo do českého, nebo jen do formátu **dd/mm/yy **?
Jan Vargovský mám datum ve stringu, bohužel ho jako DateTime nedostanu :/
CultureInfo culture = new CultureInfo("cs-CZ");
DateTime date = DateTime.Parse("1/2/2015", culture);
Zobrazeno 13 zpráv z 13.