1

我有一个名为dtpDateSelection. 当我选择一个日期时,我需要将日期分解为两个变量。我需要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'.

4

3 回答 3

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)
于 2013-09-30T16:10:39.650 回答
1

一个简单的解决方案:

Dim year As Integer = DateTimePicker.Value.Year
Dim quarter As Integer = ((DateTimePicker.Value.Month - 1) \ 3) + 1
于 2013-09-30T16:48:13.280 回答
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)
于 2013-09-30T17:36:54.283 回答