每次单击按钮将日期增加一天

时间:2019-01-19 12:47:25

标签: vb.net

所以在我的表单上,我有一个名为lblDate的标签和一个按钮。 lblDate的text属性设置为'Sun-20-02-2019'。

我想要发生的是,当用户单击按钮时,lblDate的文本将增加一天。例如,当用户单击按钮后,文本将变为“ Mon-21-02-2019”,则第二次单击按钮将是“ Tue-22-02-2019,依此类推。我似乎无法正常工作。

这是我的按钮单击事件代码:

    Dim currentDate As DateTime = lblDate.Text
    currentDate = Convert.ToDateTime(lblDate.Text)
    lblDate.Text = currentDate.AddDays(+1).ToString("ddd-dd-mm-yyyy")

3 个答案:

答案 0 :(得分:1)

您需要对标签文本进行准确的解析,Convert.ToDateTime无法正确解释您的格式

Dim currentDate As DateTime
DateTime.TryParseExact(lblDate.Text, "ddd-dd-MM-yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, currentDate)
lblDate.Text = currentDate.AddDays(1).ToString("ddd-dd-MM-yyyy")

但是您的起始数据有误。 2019年1月21日星期一不是星期一,因此TryParseExact中的所有解析代码都出错了。如果您将开始日期正确设置为2019年1月18日星期一,那么上面的代码将正常工作

另外,请注意, mm 格式适用于分钟,数月使用 MM 格式进行解析。

最后,正如其他人已经告诉您的那样,所有将日期存储在标签中然后增加日期的方法都可能是错误的方法。关于您的方法背后的原因,我们没有足够的信息,但是如果您可以更改它,那么最好有一个全局datetime变量并对其进行递增而不是解析标签。您可以使用标签仅在需要时以所需格式显示变量值。

答案 1 :(得分:1)

您应该将日期存储在变量中,然后从中递增值。正如jmcilhinney所说,标签仅用于显示而不是用于存储

'Declare dt As a field
Dim dt As DateTime

'under the form's load event
dt = DateTime.Parse("Sun, 17-02-2019")
lblDate.Text = dt.ToString("ddd-dd-MM-yyyy")

'Under your Button click event
dt=dt.AddDays(1)
lblDate.Text = dt.ToString("ddd-dd-MM-yyyy")

答案 2 :(得分:-1)

'Put whatever initial value here that is appropriate.
Private dateValue As Date = Dwte.Today

Private Sub IncrementDate()
    dateValue = dateValue.AddDays(1)

    lblDate.Text = dateValue.ToString("ddd-dd-MM-yyyy")
End Sub

如您所见,无需进行任何解析,因此您不可能使用无效的日期。

您可能还希望在表单的Label事件处理程序中的Load中显示初始日期。

还请注意,您在原始代码中使用“ mm”,持续了几分钟。 “ MM”持续了几个月。