AMcoder - javascript, python, java, html, php, sql

Ամսաթվի հաշվարկի բարելավում

Իմ ծրագրում ես ուզում եմ հաշվարկել վերջին օրը, անցյալ շաբաթը, վերջին 3 ամիսը և այլն:

Ես այն փորձել եմ հետևյալ կոդով.

Իմ բացվող իրերը այսպիսին են.

string[] items = { "All", "Last 1 Day", "Last 2 Days", 
"Last 1 Week", "Last 2 Weeks", "Last 1 Month", 
"Last 3 Months", "Last 6 Months", "Last 1 Year" }; 

Ընտրված ինդեքսը, երբ ընտրում եմ բացվող ցանկը.

public int _selectedDay = -1;
        public int selectedDay
        {
            get { return _selectedDay; }
            set
            {
                this.RaiseAndSetIfChanged(x => x.selectedDay, value);
                dayCalculation(selectedDay);               
            }
        }

Եվ օրվա հաշվարկման եղանակը.

void dayCalculation(int selected)
        {
            switch (selected)
            {
                case 0:
                    //MessageBox.Show("Selected Index==>" + (selectedDay));
                    break;
                case 1:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddDays(-1).ToString("dd/MM/yy")));                    
                    break;
                case 2:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddDays(-2).ToString("dd/MM/yy")));
                    break;
                case 3:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddDays(-7).ToString("dd/MM/yy")));
                    break;
                case 4:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddDays(-14).ToString("dd/MM/yy")));
                    break;
                case 5:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddMonths(-1).ToString("dd/MM/yy")));
                    break;
                case 6:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddMonths(-3).ToString("dd/MM/yy")));
                    break;
                case 7:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddMonths(-6).ToString("dd/MM/yy")));
                    break;
                case 8:
                    MessageBox.Show("Selected Index==>" + (DateTime.Now.AddYears(-1).ToString("dd/MM/yy")));
                    break;
                default:
                    break;
            }
        }

Այստեղ ես կարող եմ ստանալ ակնկալվող արդյունք: Բայց հիմա ես ուզում եմ պարզեցնել/նվազեցնել ծրագրի տողերը: Կա՞ որևէ լռելյայն կամ պարզ մեթոդ նախորդ օրերը հաշվարկելու համար:


  • Ի՞նչ նկատի ունեք նախորդ օրեր ասելով։ 11.08.2014
  • Օրինակ, եթե ես ընտրում եմ Վերջին մեկ օրը, նշանակում է, որ այն ցույց է տալիս Երեկվա ամսաթիվը: Եթե ​​ընտրեմ Անցյալ ամիս, նշանակում է, որ այն ցույց կտա Անցյալ ամսվա ամսաթիվը (11/07/2014): 11.08.2014

Պատասխանները:


1

Չեմ կարծում, որ դուք կարող եք այն ավելի պարզ դարձնել, քան այն, ինչ ունեք: Լուծումներից մեկը կլինի չօգտագործել 0-ից 8-ը որպես ձեր տեղադրած արժեքներ, այլ որոշ կոդ, օրինակ.

d1, d2, d7, d14, m1, m3, m6, y1

Եվ այնուհետև վերլուծեք այս կոդը՝ որոշելու համար, թե ինչ արժեք է հանել ընթացիկ ամսաթվից: Այսպիսով, օրինակ.

d1 --> DateTime.Now.AddDays(-1)
m3 --> DateTime.Now.AddMonths(-3)

Դա ձեր լուծումն ավելի ճկուն է դարձնում, բայց ոչ ավելի պարզ:

11.08.2014
  • Լավ. Շնորհակալություն @Ronald: Երբ ես ընտրում եմ բացվող տարրը, այն վերադարձնում է ամբողջ արժեք: Դրա համար ես օգտագործում եմ 0-ից 8-ը: 11.08.2014
  • Ես հասկանում եմ, բայց ամբողջ թվային արժեքներ օգտագործելու փոխարեն դուք կարող եք օգտագործել այլ բան (ինչպես այս կոդերը): 11.08.2014
  • Լավ.. Շնորհակալություն @Ronald..!! 11.08.2014
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..