将字符串解析为日期时间

时间:2013-01-10 18:40:27

标签: c#

我试图在DateTime.Now>时将状态设置为Expired开始约会日期的用户输入值。下面的解析给出了一个错误:“在将每个变量放入datetime对象之前解析字符串以获取日期”。但是我已经解析了字符串以转换为datetime。

 public void updateStatus()
    {           
        var user_time_start = DateTime.Parse(txtDateStart.Text);
        var user_time_end = DateTime.Parse(txtDateEnd.Text);
        var time_now = DateTime.Now;
        //Set Status of Appointment
        if (time_now > user_time_start || time_now < user_time_end)
        {
            cmboStatus.Text = "EXPIRED";
        }
        else
        {
            cmboStatus.Text = "CURRENT";
        }
    }

请帮助我。

2 个答案:

答案 0 :(得分:6)

我建议使用DateTime.TryParse

Datetime start;
DateTime end;
if (DateTime.TryParse(txtDateStart.Text, out start)
  && DateTime.TryParse(txtDateEnd.Text, out end))
{
  DateTime now = DateTime.Now;
  cmbo.Text = (now > start || now < end // inline ternary
    ? "EXPIRED"                         // true value
    : "CURRENT"                         // false value
  );
}
else { /* Error */ }

但是,假设这是一个表单应用程序,您可能需要查看DateTimePicker控件。

答案 1 :(得分:0)

首先要指出的是,你真的应该使用TextBox控件来获取DateTime对象的用户输入吗?

如果使用正确的控件,则无需解析任何内容。

使用TextBox Control允许用户输入任何内容!?!

开始日期=“MyPetDog”?

它不是你想要的吗?

添加两个Date TimePicker控件和一个按钮,并使用以下代码示例: -

namespace DateTimePickerTests
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DTPStartDate.Format = DateTimePickerFormat.Custom;
            DTPStartDate.CustomFormat = "dd/MM/yyyy";
            DTPStartDate.ShowUpDown = true;

            DTPEndDate.Format = DateTimePickerFormat.Custom;
            DTPEndDate.CustomFormat = "dd/MM/yyyy";
            DTPEndDate.ShowUpDown = true;

        }

        private void button1_Click(object sender, EventArgs e)
        {

            DateTime now = DateTime.Now;
            int result = DateTime.Compare(DTPStartDate.Value, now);

            if (result >= 1)
            {
                label3.Text = "Expired";
            }
            else
            {
                label3.Text = "Not Expired";
            }


        }


    }
}

有关更多信息,请参阅此页: -

http://msdn.microsoft.com/en-us/library/system.datetime.compare.aspx