-5

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";
        }
    }

これで私を助けてください。

4

2 に答える 2

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コントロールを確認することができます。

于 2013-01-10T18:45:32.033 に答える
0

ここで最初に指摘しておくべきことは、本当に TextBox コントロールを使用して、DateTime オブジェクトのユーザー入力を取得する必要があるかということです。

正しいコントロールを使用すれば、何も解析する必要はありません。

TextBox コントロールを使用すると、ユーザーが何かを入力できるようになります!?!

開始日 = "MyPetDog"?

それはあなたが望むものではありませんか?

2 つの 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

于 2013-01-10T19:09:57.050 に答える