2013-07-02 5 views
0

나는 문화 달력으로 놀고있다. GregorianCalendar (및 기타)가 System.Globalization.Calendar 이하의 유형이 될 것이라고 생각 했겠지만 그렇지 않습니다. Calendar와 동일한 세계화 클래스입니다. 아래 함수에서 내가하고 싶은 일을 할 수 있다고 생각하지 않지만 스크랩하기 전에 ...함수에서 System.Globalization 캘린더를 동적으로 선언 하시겠습니까?

"cal"에 대한 오류가 발생하면 닫힌 블록에 변수가 숨겨져 있지만 설정을 완료했습니다. 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