簡體   English   中英

如何在選擇月份名稱時顯示月份編號

[英]How to display month number on selecting month name

我在下拉列表中顯示了一個月份列表。 在選擇特定月份時,我想在文本框中顯示月份編號。

例如,如果我選擇January我想將其顯示為01 ,同樣為其他人顯示。

這是我寫的示例代碼:

string monthName = "january";
int i = DateTime.ParseExact(monthName, "MMMM", CultureInfo.CurrentCulture).Month;

使用此代碼將選定的月份名稱轉換為月份編號

DateTime.ParseExact(monthName, "MMMM", CultureInfo.InvariantCulture).Month

需要字符串填充?

PadleftMonthNumberString.PadLeft(2, "0")

參考

控制台應用示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string mnthname = "january";
            int i = DateTime.ParseExact(mnthname, "MMMM", System.Globalization.CultureInfo.InvariantCulture).Month;
            Console.WriteLine(i.ToString());
            Console.ReadLine();
        }
    }
}

只是嘗試即興(?)對hamlin11的回答,你可以通過使用下拉列表的selectedindex + 1繞過解析代碼

這是一個不需要任何解析或使用下拉列表索引的替代方法。

創建月份值到月份文本的列表,然后使用它來創建字典以將文本映射到值。 像這樣:

var months =
    from m in Enumerable.Range(1, 12)
    select new
    {
        Value = m,
        Text = (new DateTime(2011, m, 1)).ToString("MMMM"),
    };

var list = months.Select(m => m.Text).ToArray();
var map = months.ToDictionary(m => m.Text, m => m.Value);

現在可以從list填充下拉list並且可以使用map將所選的任何值轉換回值。

var month = map["January"];

這會生成文本而不是解析它,因此它適用於任何文化。

使用下拉列表的索引是一個不錯的選擇。 您還可以將字典綁定到下拉列表。 創建包含當前文化的月份名稱的字典:

var months = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames.Select ((m, i) =>
    new {
        Key = string.Format("{0,2}", i + 1),
        Value =  m,
    });

使用數據綁定:

ddl.DataSource = months;
ddl.DataTextField = "Value";
ddl.DataValueField = "Key";
ddl.DataBind();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM