我正在尝试使用变量在C#中初始化DateTime

时间:2018-06-28 16:16:32

标签: c# winforms datetime

我在这里很新,所以我的问题可能很愚蠢,但是找不到与我的问题类似的东西。 我正在VS 2017中编写Winforms应用程序。 我正在尝试使用可变的年份和月份初始化DateTime。 我的代码如下:

  int month = comboBox1.SelectedIndex;
  month++;
  label1.Text = month.ToString();
  DateTime dt = new DateTime(year,month,1);
每次用户单击组合框并选择其他月份时,

“月份”就会更改。 与今年相同,但不会崩溃, 然后我创建了一个标签,其中显示了“月份”包含的内容(始终显示1-12,具体取决于所单击的月份)。

我收到一个超出范围的异常,说它不是有效的DateTime。 (例如第13个月之类的东西,但情况并非如此,因为我通过标签对其进行了检查)

我可以观察到一个奇怪的行为: 当“ month”变量大于6时(我刚刚添加了另一个“ month ++”),它不会崩溃。尽管当我单击dezember时它确实崩溃了,因为那是13个月。但这应该是标准的。

2 个答案:

答案 0 :(得分:1)

使用显示和价值成员

创建这样的自定义类:

class Int_String
{
    //important to have get set part
    public _int { get; set; }
    public _string { get; set; }
}

现在,在创建表单时,像这样填充您的组合框:

List<Int_String> myList = new List<Int_String>();
myList.Add(new Int_String { _int = 1, _string = "January" };
myList.Add(new Int_String { _int = 2, _string = "February" };
myList.Add(new Int_String { _int = 3, _string = "March" };
myList.Add(new Int_String { _int = 4, _string = "April" };
myList.Add(new Int_String { _int = 5, _string = "May" };
myList.Add(new Int_String { _int = 6, _string = "Juny" };
myList.Add(new Int_String { _int = 7, _string = "July" };
myList.Add(new Int_String { _int = 8, _string = "August" };
myList.Add(new Int_String { _int = 9, _string = "September" };
myList.Add(new Int_String { _int = 10, _string = "October" };
myList.Add(new Int_String { _int = 11, _string = "November" };
myList.Add(new Int_String { _int = 12, _string = "December" };

myComboBox.DisplayMember = "_string";
myComboBox.ValueMember = "_int";
myComboBox.DataSource = myList;

现在,当您要创建DateTime变量时,可以这样创建它:

DateTime date = new DateTime(year, Convert.ToInt32(myComboBox.SelectedValue), 1);

答案 1 :(得分:0)

以下是从月份名称中获取月份号的方法:     新的DateTime(1,month,1).ToString(“ MMMM”);

将它们放在一起

int monthIndex = comboBox1.SelectedIndex + 1; // Gets the Current Index
DateTime dt = new DateTime(year,month,1); // Defines a Date Off Of It
label1.Text = dt.ToString("MMMM"); // Gets Format of Month Name
dt = dt.AddMonths(1); // Adds a Month, This Might End Up in January of Next Year

参考: https://www.dotnetperls.com/datetime-month