我有一个名为dtpDateSelection
的DateTimePicker。当我选择日期时,我需要将日期分成两个变量。我需要Quarter
等于日期所在的季度。我需要Year
等于日期所在的年份。我以为我知道怎么做但我有麻烦。以下是我尝试过的代码:
Dim Year As String = DatePart("yyyy", dtpDateSelection)
Dim Quarter As String = DatePart("q", dtpDateSelection)
这是我得到的错误:
Additional information: Argument 'DateValue' cannot be converted to type 'Date'.
答案 0 :(得分:1)
因此,您拥有DateTime
属性中的DateTimePicker.Value
值。
使用它可以检索日期年份,如下所示:
Dim year As Integer = DateTimePicker.Value.Year
要确定日期在哪个季度,请尝试:
Public Shared Function DetermineQuarter(dateTime As DateTime) As Integer
If dateTime.Month <= 3 Then
Return 1
End If
If dateTime.Month <= 6 Then
Return 2
End If
If dateTime.Month <= 9 Then
Return 3
End If
Return 4
End Function
现在您可以获得季度值,如下所示:
Dim quarter As Integer = DetermineQuarter(DateTimePicker.Value)
答案 1 :(得分:1)
一个简单的解决方案:
Dim year As Integer = DateTimePicker.Value.Year
Dim quarter As Integer = ((DateTimePicker.Value.Month - 1) \ 3) + 1
答案 2 :(得分:1)
正如其他人所指出的,DateTime值有一个.Month成员。对于本季度,我总是使用简单的选择功能
Dim quarter As Integer = Choose(DateTimePicker1.Value.Month, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4)
除此之外,您的两行代码仍然有效,但您需要将.Value添加到dtpDateSelection的末尾。 DatePart函数的第二个参数有一个Object类型,因此它允许你传入一个控件(你正在做的),但最终结果将是一个错误。 .Value将其更改为选择器中选择的日期。
Dim Year As String = DatePart("yyyy", dtpDateSelection.Value)
Dim Quarter As String = DatePart("q", dtpDateSelection.Value)