NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 11 - Datum a čas v C# - DateTime

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Milan Křepelka
Tvůrce
Avatar
Odpovídá na Patrik Valkovič
Milan Křepelka:2.10.2015 14:03

Obecně to není moc dobrý nápad jak to tady šíříte. Jednou je to kvůli tečkám, tak to překlopíte vlákno na anglický a pak doporučíte kvůli datumům překlápět na český vlákno. Jak vidíte, jako univerzální návod na všechno je to na houbelec.

 
Odpovědět
2.10.2015 14:03
Avatar
Odpovídá na Milan Křepelka
Patrik Valkovič:2.10.2015 14:23

Samozřejmě, protože máme jiný formát.
V jednom případě je vstupní i výstupní formát formátu anglického (tedy desetinné tečka místo čárky) - tedy veškerá komunikace probíhá v anglickém formátu.
V tomto případě zase chceme výstup český. Z toho jsem pochopil, že chce celý výstup v českém prostředí (včetně desetinných čárek, které se u nás využívají).
Pokud se jedná pouze o část programu, samozřejmě nemůže změnit CultureInfo celého vlákna, ale v případě, kdy se jedná o celou aplikaci, nevidím v tom problém.

Odpovědět
2.10.2015 14:23
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Michal Gros
Tvůrce
Avatar
Odpovídá na Patrik Valkovič
Michal Gros :3.10.2015 10:50

Dobrý den, tak to bohužel nefunguje dal jsem

class TestCeskyDenVTydnu
{
    static private DateTime datumCas = DateTime.Now;

    public static void zobrazimeCeskyDen()
    {
        Console.WriteLine("aktualni nastaveni jazyka - default :" + CultureInfo.CurrentCulture.TextInfo);
        Console.WriteLine("Dnes je {0}.", datumCas.DayOfWeek);
        Thread.CurrentThread.CurrentCulture = new CultureInfo("en-EN");
        Console.WriteLine("aktualni nastaveni jazyka:"+ CultureInfo.CurrentCulture.TextInfo);
        Console.WriteLine("Dnes je {0}.", datumCas.DayOfWeek);
        Thread.CurrentThread.CurrentCulture =  new CultureInfo("cs-CZ");
        Console.WriteLine("aktualni nastaveni jazyka:" +  CultureInfo.CurrentCulture.TextInfo);
        Console.WriteLine("Dnes je {0}.", datumCas.DayOfWeek);
    }
}

Tusime kde je chyba

Odpovědět
3.10.2015 10:50
Jestli jste dobří nahrnou na Vás spoustu práce. Jestli jste sakra dobří, tak se jí dokážete zbavit.
Avatar
Odpovídá na Michal Gros
Patrik Valkovič:3.10.2015 11:02

https://msdn.microsoft.com/….110%29.aspx

...it does not reflect a system's regional and language settings. To retrieve a string representing a localized weekday name for a particular date, call one of the overloads of the ToString...

Musíš využít přetížení metody ToString, DayOfWeek nastavení nereflekutje.

datumCas.ToString(dddd);
Odpovědět
3.10.2015 11:02
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Milan Křepelka
Tvůrce
Avatar
Milan Křepelka:3.10.2015 11:15

To je dobrá pastička. Řešením je tohle.

DateTimeForma­tInfo.CurrentIn­fo.GetDayName(da­tumCas.DayOfWe­ek)

 
Odpovědět
3.10.2015 11:15
Avatar
Michal Gros
Tvůrce
Avatar
Odpovídá na Patrik Valkovič
Michal Gros :4.10.2015 12:44

jo jo - to jsem našel viz kód výše

Odpovědět
4.10.2015 12:44
Jestli jste dobří nahrnou na Vás spoustu práce. Jestli jste sakra dobří, tak se jí dokážete zbavit.
Avatar
David Novák
Tvůrce
Avatar
David Novák:19.1.2016 7:18

Ošetření uživatelského vstupu pomocí while cyklu u parsování uživatelem vkládaného Data
Ahojte,

Prosím o radu jak doplnit další povinné parametry v závorce abych mohl ošetřit uživatelský vstup takto:(tímto způsobem ošetřuju všechny uživatelské vstupy číselných hodnot, chtěl jsem to použít i zde):

static void Main()
{
string pattern = "dd.M.yyyy";Da­teTime datum;
while (!DateTime.Try­ParseExact(Con­sole.ReadLine(),pat­tern,out datum))
Console.Write­Line(datum);
}

Hlásí mi to chybějící parametry - viz příloha nápověda Visual Studia, kterou jsem žel nepochopil.
V kurzu je pouze tento příklad (viz níže)

string pattern = "dd.M.yyyy";
DateTime datum = DateTime.Parse­Exact(Console­.ReadLine(), pattern, null);
Console.Write­Line(datum);
který funguje ale neošetřuje vstupy. V úkolech ke kapitole je parsování, ale žel bez ošetření uživatelského vstupu :-(. Předem děkuji, David

 
Odpovědět
19.1.2016 7:18
Avatar
Petr Šťastný
Tvůrce
Avatar
Petr Šťastný:17.5.2016 19:49

Ahoj, mám problém. Programuji jednu aplikaci a tam načítám různé časy z souborů. (string ve formátu HH:mm). Tohle převádím na DateTime, kde tomu přičtu čas a poté to převedu kvůli porovnání na TimeSpan. A tohle mi vyšlo:

http://prntscr.com/b5786n

Pro přehled, tohle jsou počáteční hodnoty

17:00=;19:35=;19:50=;20:10=;23:00=

Používám tento kód:

TimeSpan CasTedka = TimeSpan.Parse(DateTime.Now.ToString("HH:mm"));
                            TimeSpan CasHodiny = TimeSpan.Parse(DateTime.Parse(LajnVSouboru.Split('=')[0]).AddHours(1).ToString("HH:mm"));
                            TimeSpan CasDesetMinut = TimeSpan.Parse(DateTime.Parse(LajnVSouboru.Split('=')[0]).AddMinutes(10).ToString("HH:mm"));
                            TimeSpan CasDveMinuty = TimeSpan.Parse(DateTime.Parse(LajnVSouboru.Split('=')[0]).AddMinutes(2).ToString("HH:mm"));
                            Console.WriteLine(CasHodiny + CasDesetMinut + CasDveMinuty + CasTedka);

Tedy ideálně, aby vyšlo
18:00 (1. cas + 1h)
17:10 (1. cas + 10min)
17:02 (1. cas + 2min)
19:50 (muj aktualni cas)

Jak to mám jednoduše udělat? Mám vůbec používát ten TimeSpan? Jediné, co potřebuji, je to dostat čas ve formátu HH:mm (třeba 21:04) a to porovnávat v podmínce (pomocí >, <).

Editováno 17.5.2016 19:51
 
Odpovědět
17.5.2016 19:49
Avatar
jozef_i
Člen
Avatar
jozef_i:18.5.2016 8:54

Ja by som to nehal ako DateTime a na ten by som aplikoval metódu ToShortTimeStrin­g().
Potom máš výstup napr. 8:49

 
Odpovědět
18.5.2016 8:54
Avatar
David Javůrek:10.7.2016 23:02

Můžete mi někdo vysvětlit, proč když napíšu

datumCas.DayOfWeek

vrátí se mi den týdnu v angličtině (přitom vše ostatní je v češtině)?
Do kódu jsem zkusil přidat

Thread.CurrentThread.CurrentCulture =  new CultureInfo("cs-CZ");

a vůbec to nepomohlo. Až zápis

DateTimeFormatInfo.CurrentInfo.GetDayName(datumCas.DayOfWeek)

funguje, ale nerozumím tomu.
Děkuji za radu.

Odpovědět
10.7.2016 23:02
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
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 10 zpráv z 65.