所以在我的表单上,我有一个名为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")
答案 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”持续了几个月。