2013-01-04 81 views
0

我正在创建提醒以匹配用户输入的日期和时间。我可以使用TimerScriptManager来获取当前日期和时间。但我不知道如何将日期和时间与用户输入进行比较,并在匹配后将标签设为可见。有任何想法吗?提醒时间和日期匹配

这里是我的代码:

public partial class Reminder : System.Web.UI.Page 
{ 

private void UpdateTimer() 
{ 
    LabelCurrentTime.Text = System.DateTime.Now.ToLongTimeString(); 
} 

protected void Timer1_Tick(object sender, EventArgs e) 
{ 
    UpdateTimer(); 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    string currentdate = LabelCurrentDate.Text; 
    string currenttime = LabelCurrentTime.Text; 

    string reminderdate = TextBoxReminderDate.Text; 
    string remindertime = TextBoxReminderTime.Text; 

    Timer1.Enabled = true; 

    LabelCurrentTime.Text = System.DateTime.Now.ToLongTimeString(); 
    LabelCurrentDate.Text = System.DateTime.Now.Date.ToShortDateString(); 

    if (currentdate == reminderdate) 
    { 
     if (currenttime == remindertime) 
     { 
      Label1.Visible = true; 
     } 
    } 
} 
protected void Button2_Click(object sender, EventArgs e) 
{ 
    Timer1.Enabled = false; 
} 
} 

下面是截图: screenshot

回答

3

您试图将日期作为字符串处理。你不应该那样做。

首先,您不应该接受日期作为Textbox的用户输入。有一个具体的DateTimePicker控件专门用于让用户选择一个日期。你应该使用它。

如果您使用日期选择器为用户提供日期,那么您可以使用DateTime.Now获取当前日期。现在您有两个真实日期,您可以使用>运算符对它们进行比较。

+0

嗨Servy,我找不到DateTimePicker控件在我的工具箱 – Ching

+0

@Ching嗯......看来,我正在使用的是特定于我正在使用的另一个框架,它不是原生ASP。如果您愿意,您可以找到第三方实施(Google会显示几个)。另一种选择是使用'DateTime.ParseExact'解析文本框中的日期到字符串的日期,但要确保您不会将当前时间转换为字符串并解析它;只需使用'DateTime.Now'中的当前时间。 – Servy

+0

我应该如何使用DateTime.ParseExact解析日期?对不起,我还是这个初学者。你能告诉我一些如何做到这一点的例子吗?谢谢。 – Ching

1

解析您的日期和时间如下:

var dt = DateTime.Parse(currentDate+" "+currentTime); 
var dt2 = DateTime.Parse(reminderDate+" "+reminderTime); 

然后使用DateTime.Compare方法比较你的DateTime对象。

考虑以下几点:

var val = DateTime.Compare(dt,dt2); 

如果val为0的日期和时间是相同的。如果val大于0,则currentDate已通过reminderDate,如果val小于零,则currentDate在reminderDate之前。

+0

你不应该把你的时间,将它们转换为字符串,解析它们,然后再次比较它们。你应该从一开始就把它们保留为日期时间值。 – Servy

+0

绝对同意,但在这个例子中,他正在尝试做什么。我只是简单地提供一个简单的答案,尽管从设计角度来看它仍然不正确。 – Marcus

+0

所以你应该告诉他不要这么做,而不是帮助他正确实施不正确的做法。如果你不帮他修复底层方法,他甚至不知道这是一个坏主意。另外,为了比较日期,您可以使用'>'或'<'运算符,通常不需要使用'Compare'。 – Servy

相关问题