2013-01-10 91 views
-4

我想设置状态为过期时DateTime.Now>用户输入值开始约会日期。下面的解析给出了一个错误:“在将每个变量放入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"; 
     } 
    } 

请帮助我。

+1

你能请张贴的确切错误的文字? –

+0

这是*确切的*错误信息?听起来不太可能。你试图解析的价值是什么?请参阅http://tinyurl.com/so-list –

+1

您为user_time_start和user_time_end输入了什么值? – MethodMan

回答

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控制。

+2

[DateTime.TryParseExact](http://msdn.microsoft.com/en-us/library/system.datetime.tryparseexact.aspx)也可能有帮助。 –

+0

@AlexanderBalte:确实,很好的电话。以更好地控制信息的呈现方式。 –

+0

非常感谢DateTime.TryParse正常工作。 – Dexter

0

这里要指出的第一件事情是,如果您真的在使用TextBox控件为用户输入DateTime对象?

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

通过使用TextBox控件允许用户输入任何东西!?!

Start Date =“MyPetDog”?

它不是你想要的吗?

添加两个日期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