我正在创建一个提醒,以匹配用户输入的日期和时间。我可以使用Timer
和ScriptManager
来获取当前日期和时间。但我不知道如何将日期和时间与用户输入进行比较,并在匹配后使标签下方可见。有什么想法吗?
这是我的代码:
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
答案 0 :(得分:3)
您正在尝试将日期作为字符串处理。你不应该这样做。
首先,您不应接受来自Textbox
的日期作为用户输入。有一个特定的DateTimePicker
控件专门用于让用户选择日期。你应该使用它。
如果您使用日期选择器为用户提供日期,那么您可以使用DateTime.Now
获取当前日期。现在您有两个实际日期,您可以使用>
运算符对它们进行比较。
答案 1 :(得分: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在提醒日期之前。