Diskuze: Algoritmus na kalkulačku stáří - roky, měsíce a dny
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 20 zpráv z 20.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Skús https://msdn.microsoft.com/…vs.110).aspx
Uvedená metóda vráti rozdiel medzi dvoma inštanciami DateTime (napríklad
medzi aktuálnym dátumom a dátumom narodenia) 
To som ja osobne zatiaľ nerobil, s tým ti bude musieť poradiť asi niekto iný. Ale skús sa pozrieť sem: https://stackoverflow.com/…itten-inside
Ak by si si to ale chcel naozaj napísať sám, tak by som išiel cez
vlastnosti, ktoré DateTime poskytuje:
https://msdn.microsoft.com/….110%29.aspx?…
(časť Properties)
Najjednoduchšie by bolo asi odčítať vlastnosť Ticks oboch inštancií.
myslím že jsem něco podobného řešil, nepsal jsem teda vlastní metodu, ale jedna možnost bych řekl že je, rozparsovat datum na rok, měsic a den zjistit zda je přestpuný nebo ne a pak odečíst, další je že se datumy převedou na číslo odečtou se a zpět vrátí do datumu... už nevím jak se to jmenuje, ale i na to je metoda... je to podobné jako v excelu, 1.1.1900 je tuším 1
Ano, tady je přímo zdrojový kód: http://referencesource.microsoft.com/#…
Do školy jsem dělal něco relativně podobného a mohu tě ujistit, že práce
s čase je neuvěřitelně zrádná a chceš, aby to za tebe obstarala
knihovna.
Mluvíš o Unix time a trochu jsi se spletl... 1.1.1970 je 0
. Každopádně, snad všechno,
co pracuje s čase funguje tak že se vše převede na jedno číslo, takže
potom je jednoduché udělat třeba rozdíl, součet, prakticky všechno a celé
to je konzistentní, protože operuješ jen s jedním číslem kromě funkcí,
co to převádí z a na lidskyy čitelný formát.
No ono to tak úplně primitivní úloha "až do konce" není. Například
určit, jestli je 1 měsíc 28-29-30-31 dní?
Je tedy člověk starý 696 hodin
1měsíc starý a 1 den, nebo 29dní starý? Pro takovéto výpočty se to
nejčastěji bere synodický měsíc, takže 29,5 dne (zaokrouhluje se nahoru na
30)
jo, už jsem s tím dlouho nepracoval a bral jsem to tak jak to ukáže excel, to si můžeš zkusit, zadat 1.1.1900 a změnit na číslo....
dále je nutné brát v potaz další věc a tou je přechodný rok, který má také svůj algoritmus
Uprimne,.. pouzil bych knihovny, ktere ma .net a ten umi normalne datumy odecitat, to vyflusne timespan a ten ma na sobe dalsi getery a metody.
Odkud bereš ty počty na dni v měsíci? Však všechny kromě února jsou statické a únor závisí na přestupném roku. Vypočítat přestupný rok je lehké.
Narodil jsem se 16.12. 2017 a ted je 16.1.2018. Tedy 31 dni.. Je mi podle tebe 1 měsíc a jeden den, nebo 1 měsíců a 0 dnu, nebo 1 měsíc a 3 dny, nebo 1 měsíc a 2 dny?:) měsíc totiž není jasné definovány časový úsek a ty mas z poctu dnů vypsat jak je člověk starý.
To nemusí být pravda. Protože někdo / něco může mít jako "1 měsíc" definováno 30 dní, někdo jiný (jiný systém) 31dní.
1 month prostě není přesný údaj.
Pro zajímavost, google třeba jako měsíc vnímá 30.4 dne, tedy 30
dní.
https://www.google.cz/search?…
No, mě ten výsledek vyhodil 29.53 dní, takže... to asi nebude úplně
dobře.
Máš pravdu, ale tohle je něco, co je prostě pevně daná konstanta, kterou
se podělí rozdíl v času třeba v sekundách nebo ticích. Ale ani to není
dobrý nápad, s měsícem prostě nepracuješ (ani .NET TimeSpan s tím
nepracuje) a bereš jen to, co je dobře definováno, tedy dny a menší
jednotky.
Tedy... mohli bychom se bavit o srandách jako třeba přestupné sekundy, ale
to asi není potřeba 
http://referencesource.microsoft.com/#…
todle je treba husty
Koukni na to, je to určitě "zajímavý" způsob jak třeba dělá .NET
AddMonth()
DateTime Now = DateTime.Now;
DateTime Dn = new DateTime(2000,1,1);
DateTime Out;
int day = 0;
int month = 0;
int year = 0;
year = Convert.ToInt32(Now.Year) - Convert.ToInt32(Dn.Year);
if (Now.Month > Dn.Month || Now.Month == Dn.Month) month = Convert.ToInt32(Now.Month) - Convert.ToInt32(Dn.Month);
else
{
month = (Convert.ToInt32(Now.Month) + 12) - Convert.ToInt32(Dn.Month);
year--;
}
if (Now.Day > Dn.Day || Now.Day == Dn.Day) day = Convert.ToInt32(Now.Day) - Convert.ToInt32(Dn.Day);
else if (Now.Month == 1 || Now.Month == 3 || Now.Month == 5 || Now.Month == 7 || Now.Month == 8 || Now.Month == 10 || Now.Month == 12) { day += 31; month--; }
else if (Now.Month == 2) { day += 28; month--; }
else if (Now.Month == 2 && DateTime.IsLeapYear(DateTime.Now.Year)) { day += 29; month--; }
else { day += 30; month--; }
if (month == -1) { month += 12; year--; }
Console.WriteLine("Jsi starý:" + year + " let, " + month + " měsíců, " + day + " dnů");
Console.ReadLine();
Co třeba toto ?
Vnímám to stejně jako Google, jen jednoduše jako 365,25 / 12. Až teď
jsem pochopil co jsi tím chtěl vyjádřit. Já to první od tebe pochopil tak,
že nevíš kolik má měsíc dní
takhle s tebou souhlasím, že určit stáří na dny dokážeš hned,
na roky taky, ale u těch měsíců je to relativní a nevím jestli se to bere
podle průměru (ten výpočet na průměrný počet dní v měsíci) nebo jak

btw, to tu netáhám ještě přestupnou sekundu a podobné srandy. Souhlasím, že bych to nechal počítat knihovny, které by s tím měly umět pracovat (haha javascript a timezony v něm).
Doporučuji shlédnout diskuzní fóra kde maminky horlivě řeší, kdy bude
jejich ratolesti právě X měsíců. Namátkově jsem pár takových
navštívil a četnost těchto dotazů je s nadsázkou zhruba stejná jako
četnost podmíněných příkazů použitých programátorem v programu. 
Zobrazeno 20 zpráv z 20.