NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Frestyle
Člen
Avatar
Frestyle:2.11.2016 18:30

Dobrý večer, prosím kde dělám chybu? Snažím se dostat datum po odečtu ze současného, ale něco dělám špatně. Děkuji

public static string Prevod(DateTime dat1)
{
DateTime dat2 = DateTime.Now;
TimeSpan ts = dat2 - dat1;
DateTime vs = Convert.ToDate­Time(ts);
return vs.ToString();
}

 
Odpovědět
2.11.2016 18:30
Avatar
Odpovídá na Frestyle
Tomáš Brabec:2.11.2016 18:38

Z TimeSpan (doby, např. 6 dní a 5 hodin) udělat datum (DateTime) moc smysl nedává ne?

Nahoru Odpovědět
2.11.2016 18:38
Lidé se dělí do 10 skupin. Jedni dvojkovou soustavu znají a druzí ne.
Avatar
Frestyle
Člen
Avatar
Odpovídá na Tomáš Brabec
Frestyle:2.11.2016 19:01

Potřebuju datovej výstup. Jinak by to smysl nedávalo

 
Nahoru Odpovědět
2.11.2016 19:01
Avatar
Frestyle
Člen
Avatar
Odpovídá na ostrozan
Frestyle:2.11.2016 19:48

Na místo: DateTime vs = Convert.ToDate­Time(ts);
Dám: DateTime vs = DateTime.Substrac­t(ts); ?

 
Nahoru Odpovědět
2.11.2016 19:48
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Frestyle
ostrozan:2.11.2016 20:06

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();
}
 
Nahoru Odpovědět
2.11.2016 20:06
Avatar
Frestyle
Člen
Avatar
Odpovídá na ostrozan
Frestyle:2.11.2016 20:41

To vypisuje pouze aktuální datum. Né výpočet

 
Nahoru Odpovědět
2.11.2016 20:41
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Frestyle
ostrozan:2.11.2016 21:05

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

 
Nahoru Odpovědět
2.11.2016 21:05
Avatar
Frestyle
Člen
Avatar
Odpovídá na ostrozan
Frestyle:2.11.2016 21:15

Zkusil jsem tohle: DateTime ts = dat2.Subtract(dat1);
ale hlásí to chybu

 
Nahoru Odpovědět
2.11.2016 21:15
Avatar
Frestyle
Člen
Avatar
Frestyle:2.11.2016 21:22

return dat2.Subtract(dat1)­.ToString();

Vypíše: 21:19:46.5143316
Já se snažím aby vypsal datumem, ale stále bloudím

 
Nahoru Odpovědět
2.11.2016 21:22
Avatar
Odpovídá na Frestyle
Lukáš Křehula:2.11.2016 21:48

Nějak tomu nerozumím, co přesně chceš z výstupu dostat? Resp. napiš nějaký příklad, vstup a výstup.

 
Nahoru Odpovědět
2.11.2016 21:48
Avatar
Honza
Člen
Avatar
Honza:2.11.2016 23:30

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.

Editováno 2.11.2016 23:33
Nahoru Odpovědět
2.11.2016 23:30
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
HONZ4
Člen
Avatar
HONZ4:3.11.2016 0:07

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

Editováno 3.11.2016 0:09
 
Nahoru Odpovědět
3.11.2016 0:07
Avatar
Frestyle
Člen
Avatar
Frestyle:3.11.2016 15:01

Aď dělám co dělám, tak mi nejde Timespan předělat do datového formátu. Návod mi moc nepomohl. Je to tam na čas, ale já chci výsledek vypsat v datumu

 
Nahoru Odpovědět
3.11.2016 15:01
Avatar
Frestyle
Člen
Avatar
Frestyle:3.11.2016 15:16

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

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
3.11.2016 15:16
Avatar
Odpovídá na Frestyle
Michal Štěpánek:3.11.2016 17:38

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"

Editováno 3.11.2016 17:41
Nahoru Odpovědět
3.11.2016 17:38
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Frestyle
Člen
Avatar
Odpovídá na Michal Štěpánek
Frestyle:3.11.2016 19:07

Děkuji moc. Někdy sedím, ale pořád se jen učím.

 
Nahoru Odpovědět
3.11.2016 19:07
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Frestyle
ostrozan:3.11.2016 19:45

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,se­kund ..... 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.Subtrac­t(DateTime) vrací TimeSpan
DateTime.Subtrac­t(TimeSpan)vra­cí 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

Editováno 3.11.2016 19:46
 
Nahoru Odpovědět
3.11.2016 19:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.