查找DateTimePicker选定日期的季度

时间:2013-09-30 16:00:16

标签: vb.net datetimepicker

我有一个名为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'.

3 个答案:

答案 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)