2013-01-10 241 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