Diskuze: Chybný převod datumu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 18 zpráv z 18.
//= 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.
Z TimeSpan (doby, např. 6 dní a 5 hodin) udělat datum (DateTime) moc smysl nedává ne?
Potřebuju datovej výstup. Jinak by to smysl nedávalo
Na místo: DateTime vs = Convert.ToDateTime(ts);
Dám: DateTime vs = DateTime.Substract(ts); ?
Teď to nemám jak zkusit, ale mělo by to fungovat zhruba takto :
public static string Prevod(DateTime dat1)
{
return DateTime.Now.Subtract(dat1). ToString();
}
Psal jsem to z hlavy na mobilu - má tě to jen nasměrovat správným
směrem.
Prostě když chceš odečíst od datumu datum, nebo timespan použij
Subtract
Zkusil jsem tohle: DateTime ts = dat2.Subtract(dat1);
ale hlásí to chybu
Nějak tomu nerozumím, co přesně chceš z výstupu dostat? Resp. napiš nějaký příklad, vstup a výstup.
Ahoj, z proměnné typu TimeSpan získáš počet něčeho. Typicky sekund, hodin, dnů, měsíců atd. které jsou výsledke toho rozdílu dvou dat co tam máš. Ale nemá smysl to převádět na DateTime. Jak by měla být nastavená logika?
Představ si to na časové ose. Když vezmeš dva body na časové ose (DateTime), tak můžeš získat informaci jak jsou daleko od sebe (TimeSpan) v nějakých jednotkách (např. ve dnech). Ale už nemáš jak z toho udělat další bod (DateTime). Jinýmy slovy, DateTime je bod a TimeSpan úsek.
Od data můžeš odečíst nějaký konkrétní časový úsek (měsíc, den, atd.) ale nemůžeš odečíst jiné datum. Pokud uvažuješ tak, že např. 01.01.3000 - 01.01.1000 = 01.01.2000 tak takhle to nefunguje. Nedává to smysl.
Jen doplním, že (když nepůjdeme moc do detailů), tak už počítat kolik je to měsíců je nesmyslné (nejsou všechny stejně dlouhé). Takže stačí vypsat TimeSpan jako dny a čas pomocí .ToString() nebo si určit vlastní formát výpisu. návod je zde
Přesně se snažím převést tonto počet do datumu:
public static string Prevod(DateTime dat1)
{
int cislo = 6;
DateTime ts = dat1 - cislo;
return ts.ToString();
}
Furt se nemůžu dopátrat výsledku. Prosím o nějaký podrobnější článek nebo nápovědu
Tak nevím, jestli si sedíš na vedení či co? Všichni ti tu píšou, že to co děláš je blbost a ty si pořád nedáš říct... Od datumu (DateTime) nemůžeš jen tak odečítat číslo(int). Pokud chceš odečíst 6 dnů, musíš takto
DateTime predsestidny = DateTime.Now.Date.AddDays(-6);
A rozdíl mezi datumy NELZE vyjádřit datovým typem DateTime. VŽDYCKY to bude JEN číslo, tzn. třeba "int"
Děkuji moc. Někdy sedím, ale pořád se jen učím.
Už jsem to rozepsal, tak to nebudu mazat - i když řešení jsi už asi našel, jen se trochu netrefil s označením
Som z toho voľáky zmätený
Tohle
public static string Prevod(DateTime dat1)
{
DateTime dat2 = DateTime.Now;
TimeSpan ts = dat2 - dat1;
DateTime vs = Convert.ToDateTime(ts);
return vs.ToString();
}
a toto:
public static string Prevod(DateTime dat1)
{
int cislo = 6;
DateTime ts = dat1 - cislo;
return ts.ToString();
}
jsou docela odlišné věci, ale dobře vezměme to jako že to druhé je
zjednodušením (na vysvětlenou) toho prvního
ale znova:
DateTime je strutura vyjadřující datum a čas - dnes je
3.11.2016 18:55:03
TimeSpan je struktura vyjadřující časový úsek - kolik
dní,hodin,minut,sekund ..... uplynulo od daného datumu a času, kolik
zbývá ... jak dlouho to trvalo
pokud chceš odečíst dva datumy s časem a vyjádřit to zase datumem a časem tak to jde
public static string Prevod(DateTime dat1)
{
TimeSpan ts = DateTime.Now.Subtract(dat1);
return DateTime.Now.Subtract(ts)ToString();
}
DateTime.Subtract(DateTime) vrací
TimeSpan
DateTime.Subtract(TimeSpan)vrací
DateTime
tahle konstrukce ale samozřejmě nesmysl - dostaneš zpátky dat1
takže smysl to má buď jako přičtení ts k DateTime.Now
public static string Prevod(DateTime dat1)
{
TimeSpan ts = DateTime.Now.Subtract(dat1);
return DateTime.Now.Add(ts)ToString();
}
nebo odečtení/přičtení nějakého jiného DateTime
Jestli nepomůže už ani tohle tak fakt nevím
Zobrazeno 18 zpráv z 18.