Keresés

Új hozzászólás Aktív témák

  • vlevi

    nagyúr

    válasz cigam #8767 üzenetére

    Ez így biztosan nem jó. Ha az utolsó if, vagyis a holnap+3=1 nem teljesül, mindenképp üres lesz a két elem.
    Vagy az egészet egymasba ágyazott if else szerkezetekbe rakod, vagy a switchcase ilyen esetben jobb.
    Vagy előre feltöltést egy constans tömböt az eredményekkel, és csak abból választasz.
    Arra is vigyázz, hogy a dayofweek angol területén vasarnap az 1, Magyarországon a hétfő. Itt is érdemes használni a culture paramétert.

  • joysefke

    veterán

    LOGOUT blog

    válasz cigam #8767 üzenetére

    Hali!

    nem teljesen értem, mit szeretnél csinálni, vagy a kód amit beszúrtál mit csinál, de a következő észrevételeim lennének: :)

    1,
    if (holnap+1=1) ide szerintem == operátor kéne, nem értékadás. Egyáltalán miért nem kapsz itt hibát, hiszen az értékadás bal oldalán nem változó áll :F

    2,
    Az if( ) feltételeid egymást mind kölcsönösen kizárják, tehát nem fordulhat elő, hogy egyszerre kettő if-törzsbe belépsz.

    Sokkal átláthatóbb lenne a kód, ha
    if(A) {..}
    else if (B) {...}
    else if (C) {...}
    else {}

    konstrukciókat használnál.

    Sőt, ilyen helyzetben én inkább egyből switch statementet használnék, ami a holnap változódtól függően csinálna valamit (adna értéket a listaelemeidnek )

    3,

    Ha ki akarod kerülni ezt a "hét napja" enum-aritmetikát /ami vonzza a hibákat mint a mágnes/, akkor az első dolog ami nekem eszembe jut (persze nyilván vannak más, akár jobb megoldások is) készíteni statikus extension methodokat, amelyek kényelmessé teszik az életedet:

    Pld:
    public static class DayHelper
    {
    public static int DaysToMonday()
    {
    var today = DateTime.Today.DayOfWeek;
    var offset = DayOfWeek.Monday - today;
    return offset >= 0 ? offset : 7 + offset;
    }

    public static int DaysToSunday()
    {
    var today = DateTime.Today.DayOfWeek;
    var offset = DayOfWeek.Sunday - today;
    return offset >= 0 ? offset : 7 + offset;
    }

    public static int DaysToMonday(this DateTime date)
    {
    var day = date.DayOfWeek;
    var offset = DayOfWeek.Monday - day;
    return offset >= 0 ? offset : 7 + offset;
    }
    Stb stb stb
    }

    class Program
    {
    static void Main(string[] args)
    {

    Console.WriteLine(DayHelper.DaysToMonday());
    Console.WriteLine(DayHelper.DaysToSunday());

    Console.WriteLine(new DateTime(2019, 4, 20).DaysToMonday());

    Console.WriteLine("Hello World!");
    }
    }

    Innentől kezdve, ha hívsz a kódodban egy ilyet hogy:

    DayHelper.DaysToMonday()
    akkor visszaadja a hétfőig hátralevő napok számát. Ezt nyilván meg tudod csinálni a hét összes napjára.

    Ha pedig van egy DateTime típusú változód, akkor azon meghívva a DaysToMonday()-t visszaadja az adott dátumtól a hétfőig visszalevő napok számát. Pld:
    Console.WriteLine(new DateTime(2019, 4, 20).DaysToMonday());

    Visszaadja hogy 20-i dátumtól kezdve mennyit kell aludni hétfőig.

    [ Szerkesztve ]

Új hozzászólás Aktív témák