webForumDet fria alternativet

Gör om 1950-1-1 till 1950-01-01

.NET

3 svar · 311 visningar · startad av PBF

Medlem sedan mars 200657 inlägg
Frågan#1

Tjena!

Har tre DropDownLists:s som representerar år, månad och dag.
När användaren valt dessa formatteras dataumet såhär: 1950-1-1

Men då går det ju inte att köra t.ex: ToShortDateString() eller liknande, utan det jag måste göra är att konveretera det på något sätt. Vet nån hur jag kan gå tillväga?

Detta är min kod, den är nedladdad så jag skulle slippa göra det själv:

        DateTime tnow = DateTime.Now;
        ArrayList AlYear = new ArrayList();
        int i;
        for (i = 1920; i <= 2008; i++)
            AlYear.Add(i);
        ArrayList AlMonth = new ArrayList();
        for (i = 1; i <= 12; i++)
            AlMonth.Add(i);
        if (!this.IsPostBack)
        {

            DropDownList1.DataSource = AlYear;
            DropDownList1.DataBind();
            DropDownList1.SelectedValue = "1950";
            DropDownList2.DataSource = AlMonth;
            DropDownList2.DataBind();
            //DropDownList2.SelectedValue = tnow.Month.ToString();
            year = Int32.Parse(DropDownList1.SelectedValue);
            month = Int32.Parse(DropDownList2.SelectedValue);
            BindDays(year, month);
            //DropDownList3.SelectedValue = tnow.Day.ToString();
        }
    private bool CheckLeap(int year)
    {
        if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
            return true;
        else return false;
    }

    private void BindDays(int year, int month)
    {
        int i;
        ArrayList AlDay = new ArrayList();

        switch (month)
        {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                for (i = 1; i <= 31; i++)
                    AlDay.Add(i);
                break;
            case 2:
                if (CheckLeap(year))
                {
                    for (i = 1; i <= 29; i++)
                        AlDay.Add(i);
                }
                else
                {
                    for (i = 1; i <= 28; i++)
                        AlDay.Add(i);
                }
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                for (i = 1; i <= 30; i++)
                    AlDay.Add(i);
                break;
        }
        DropDownList3.DataSource = AlDay;
        DropDownList3.DataBind();
    }
    //select year
    public void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        year = Int32.Parse(DropDownList1.SelectedValue);
        month = Int32.Parse(DropDownList2.SelectedValue);
        BindDays(year, month);
    }

    //select month
    public void DropDownList2_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        year = Int32.Parse(DropDownList1.SelectedValue);
        month = Int32.Parse(DropDownList2.SelectedValue);
        BindDays(year, month);
    }

Är det ens möjligt att få formatet som ett normalt datumformat? D.v.s. det som står i rubriken.

Medlem sedan aug. 20003 575 inlägg
#2
new DateTime(int year, int month, int day);
Medlem sedan mars 200657 inlägg
#3

Aha. Vart lägger jag denna raden? Här eller:

new DateTime (DropDownList1.SelectedValue, DropDownList2.SelectedValue, DropDownList3.SelectedValue);

Medlem sedan mars 200657 inlägg
#4

Nickemannen skrev:

new DateTime(int year, int month, int day);

Tack Nicke, det är nu löst. Eminent.

252 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)