查找一年中最后一天(VB 6.0)

时间:2013-08-14 16:43:50

标签: vb6

我正在创建一个预测该月最后一天的程序。我已经设法给这几个月他们的价值,但是这一年也需要写,以确定它是否是闰年。 对象: 2个文本框,1个命令按钮,1个标签

  

不幸的是,需要选择案例。

我的代码:

Private Sub Command1_Click()
Dim month, year As String

month = txtmonth.Text
year = txtyear.Text

Select Case month
Case "Feb", "February"
        lblday.Caption = CStr(Day(DateSerial(year, 3, 1) - 1))
Case "Jan", "January", "Mar", "March", "May", "Jul", "July", "Aug", "August", "Oct", "October", Dec, December
        lblday.Caption = "It has" & " " & CStr(Day(DateSerial(year, 3 + 2, 1) - 1)) & " " & "days"
'year/30/month
Case "April", "Jun", "June", "Sept", "September", "Nov", "November"
        lblday.Caption = "It has" & " " & CStr(Day(DateSerial(year, 3 + 1, 1) - 1)) & " " & "days"
'year/31/month
End Select

End Sub

2 个答案:

答案 0 :(得分:1)

用户应该输入文本框,字符串或数字是什么?

如果用户输入是一个字符串,那么您应该将月份放在引号中,例如此Case "Feb", "February"month需要声明为String并直接指定txtmonth.Text Val

如果用户输入是一个数字,那么您需要从Case FebMarch中移除所有短月和长月名称并使用这样的数字{{1 }}

如果您希望优化代码(假设您必须拥有Case 2 ' this is for February),而不是要求用户进行闰年,您可以自己计算:

Case

如果您不必拥有Case Feb, February lblday.Caption = Cstr(day(DateSerial(Year(Now), 3, 1) - 1)) ,那么您的所有代码都可以针对此进行优化:

Case

使用该代码,您可以输入月份编号,月份全名或月份短名称,它将起作用。它将假设年份为当前年份(您没有指定用户是否输入年份)。

修改

我拿了你的代码并修正了以下内容:

  • 重新安排了几个月,因为有些月份是30天一个月的情况,他们是31天的月份,反之亦然
  • 将案例改为小写。这样您就可以在任何情况下输入月份名称。例如,之前只有Private Sub Command1_Click() lblday.Caption = CStr(Day(DateSerial(Year(Now), Month(DateValue(txtmonth.Text & " 0")) + 1, 1) - 1)) End Sub 才有效。现在一切正常:OctoctOCToCt ......
  • OcT更改为Sept以保持一致
  • 改变了一个月内计算天数的方式。对于30天的月份,您将使用此sep从4月开始的天数,从3月开始使用此Day(DateSerial(year, 3 + 2, 1) - 1)的31天。如果将来我们改变三月份的天数会怎样?整个逻辑崩溃了。我意识到这是不太可能的,但仍有可能。我们绝对没有理由不能像Day(DateSerial(year, 3 + 1, 1) - 1)
  • 那样自行计算每个月
  • 因为我上面改变的事情,我不得不使用名为CStr(Day(DateSerial(year, month(DateValue(txtmonth.Text & " 0")) + 1, 1) - 1))的函数,但你已经有一个名为Month的命名错误的变量,所以这是我必须解决的冲突,因此删除了变量{完全{1}}。如果必须拥有它,请将其重命名为month或其他内容。

有一些明确定义代码的一些提示: - 将month重命名为myMonth year lblday myYear lblDay use camel style: change all labels and text boxes to follow this naming convention. Example: rename txtmonth to txtMonth and如果您不需要,请不要使用变量。 to变量是不必要的。您甚至可以删除 变量,因为您根本不对其进行任何计算。

month

答案 1 :(得分:0)

LastDate= DateAdd("m", 1, DateAdd("d", -1 * Day(Date), Date))