按小时增加日期

时间:2013-08-21 08:14:28

标签: c# .net wpf

每次我点击小时按钮或分钟按钮时,它应填充一个文本框,并在24小时格式内每小时按钮增加1小时。这同样适用于分钟按钮。目前它不是迭代的,只是只增加一次。

private void Cld_SelectedDateChanged(object sender,vhCalendar.SelectedDateChangedEventArgs e)
{
    textBox1.Text = e.NewDate.ToString();
    txtHH.Text = DateTime.Now.Hour.ToString();
    txtMM.Text = DateTime.Now.Minute.ToString();
}

private void btnAddHour_Click( object sender, RoutedEventArgs e )
{
    txtHH.Text = DateTime.Today.AddHours( 1 ).ToString("HH");
}

private void btnAddMinute_Click( object sender, RoutedEventArgs e )
{
    txtMM.Text = DateTime.Today.AddMinutes( 1 ).ToString( "mm" );
}

3 个答案:

答案 0 :(得分:3)

每次单击时都要向current date添加一个,如果查看代码,则需要将1添加到文本框的当前日期值,但是要将其添加到{{1每次点击一遍又一遍。

因此,DateTime.Today文本框中的当前值(如果不为空),否则设置为当前日期,然后将分钟/小时添加到此值。

例如,它会是这样的......

tryparse

这是假设填充了文本框,或者您需要先分配它。

如果文本框没有值,您可以获得private void btnAddHour_Click( object sender, RoutedEventArgs e ) { DateTime curDate; DateTime.TryParse(txtHH.Text, out curDate); txtHH.Text =curDate.AddHours( 1 ).ToString("HH"); } 的结果,并将值设置为当前日期。

TryParse

答案 1 :(得分:1)

DateTime.Today返回类似21/08/2013 00:00:00的内容。 每次调用时都会返回相同的DateTime

您需要添加点击计数器并添加计数器或存储DateTime.Today的初始结果并继续增加。

请注意,如果在应用程序执行过程中更改了日期,则第二个解决方案是您需要使用的解决方案,因为在第一个解决方案中,日期将会增加而不需要它。

答案 2 :(得分:1)

DateTime.AddHours()和DateTime.AddMinutes()在调用它们时都返回DateTime的新实例。您应该保留已返回实例的记录,并在下次单击“小时”按钮或“分钟”按钮时调用它。这就是你的代码的样子:

private DateTime m_LastDateTime;

private void Cld_SelectedDateChanged(object sender, EventArgs e)
{
    m_LastDateTime = e.Start;
    textBox1.Text = m_LastDateTime.ToString();
    txtHH.Text =m_LastDateTime.Hour.ToString();
    txtMM.Text =m_LastDateTime.Minute.ToString();
}

private void btnAddHour_Click( object sender, RoutedEventArgs e )
{
    m_LastDateTime = m_LastDateTime.AddHours(1);
    txtHH.Text = m_LastDateTime.ToString("HH");
}

private void btnAddMinute_Click( object sender, RoutedEventArgs e )
{
    m_LastDateTime = m_LastDateTime.AddMinutes(1);
    txtMM.Text = m_LastDateTime.ToString( "mm" );
}