2013-07-02 75 views
0

我與文化日曆播放。我本來以爲GregorianCalendar的(和其他人)將是一個類型的System.Globalization.Calendar下,但事實並非如此。這是一個相當於日曆的全球化課程。在下面的功能,我不認爲我可以做我想做的事,但我得到關於「CAL」錯誤就廢了...動態聲明System.Globalization日曆的功能?

之前隱藏的變量在封閉塊,但我並設置它在dim語句默認。 Calendar類似乎沒有聲明的能力,然後用文化來繪製它。看來你必須宣佈「文化」日曆課程,它不能改變。你是否看到了解決這個問題的方法並將其保存在一個簡短的函數中?

Public Function GetDaysInMonth(ByVal dt As Date, 
           Optional ByVal sCalendar As String = "GREGORIAN") As Integer 

    Dim cal As System.Globalization.GregorianCalendar 

    Dim y, m As Integer 
    Select Case UCase(sCalendar) 
     Case "HEBREW" 
      Dim cal As New HebrewCalendar 
     Case "HIJRI" 
      Dim cal As New HijriCalendar 
     Case "JAPENESE" 
      Dim cal As New JapaneseCalendar 
     Case "JULIAN" 
      Dim cas As New JulianCalendar 
     Case "KOREAN" 
      Dim cal As New KoreanCalendar 
     Case "TAIWAN" 
      Dim cal As New TaiwanCalendar 
     Case "THAIBUDDHIST" 
      Dim cal As New ThaiBuddhistCalendar 
     Case Else 'Gregorian 
    End Select 
    y = Year(dt) 
    m = Month(dt) 
    Return (cal.GetDaysInMonth(y, m)) 

回答

0

已解決。我不知道這是否是最簡單的方法......但這是最終的代碼。

Public Function GetDaysInMonth(ByVal dt As Date, 
            Optional ByVal sCalendar As String = "GREGORIAN") As Integer 
System.Globalization.CultureInfo.InvariantCulture 
     Dim cal As System.Globalization.GregorianCalendar 
     Dim y, m As Integer 
     y = Year(dt) 
     m = Month(dt) 
     Select Case UCase(sCalendar) 
      Case "HEBREW" 
       Dim cal1 As New HebrewCalendar 
       Return (cal1.GetDaysInMonth(y, m)) 
      Case "HIJRI" 
       Dim cal2 As New HijriCalendar 
       Return (cal2.GetDaysInMonth(y, m)) 
      Case "JAPENESE" 
       Dim cal3 As New JapaneseCalendar 
       Return (cal3.GetDaysInMonth(y, m)) 
      Case "JULIAN" 
       Dim cal4 As New JulianCalendar 
       Return (cal4.GetDaysInMonth(y, m)) 
      Case "KOREAN" 
       Dim cal5 As New KoreanCalendar 
       Return (cal5.GetDaysInMonth(y, m)) 
      Case "TAIWAN" 
       Dim cal6 As New TaiwanCalendar 
       Return (cal6.GetDaysInMonth(y, m)) 
      Case "THAIBUDDHIST" 
       Dim cal7 As New ThaiBuddhistCalendar 
       Return (cal7.GetDaysInMonth(y, m)) 
      Case Else 'Gregorian 
       Return (cal.GetDaysInMonth(y, m)) 
     End Select 
    End Function