⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 VB的文本资料,需要时有帮助
💻
📖 第 1 页 / 共 2 页
字号:
       Else
          If y <= 1910 Then
             tempStr = "清朝宣统"
             If y = 1909 Then
                tempStr = tempStr & "元年"
             Else
                tempStr = tempStr & UpNumber(CStr(y - 1909 + 1)) & "年"
             End If
          Else
             If y < 1949 Then
                tempStr = "中华民国"
                If y = 1912 Then
                   tempStr = tempStr & "元年"
                Else
                   tempStr = tempStr & UpNumber(CStr(y - 1912 + 1)) & "年"
                End If
             Else
                tempStr = "中华人民共和国成立"
                If y = 1949 Then
                   tempStr = tempStr & "了"
                Else
                   Select Case y
                      Case 2000
                         tempStr = "千禧年"
                      Case Else
                         tempStr = tempStr & UpNumber(CStr(y - 1949)) & "周年"
                   End Select
                End If
             End If
          End If
       End If
   End If
   
   Era = tempStr
End Function

' 传入 num 传回干支, 0=甲子
Public Function GanZhi(num As Long) As String
    Dim tempStr As String
    Dim i As Long
    i = (num - 1864) Mod 60 '计算干支
    tempStr = Gan(i Mod 10) & Zhi(i Mod 12)
    GanZhi = tempStr
End Function

'计算年的属相字串
Public Function YearAttribute(y As Long) As String
    YearAttribute = Animals((y - 1900) Mod 12)
End Function

'将数字汉化
Public Function UpNumber(Dxs As String) As String

 '检测为空时
 If Trim(Dxs) = "" Then
    UpNumber = ""
    Exit Function
 End If
  
 Dim Sw As Integer, SzUp As Integer, tempStr As String, DXStr As String
    Sw = Len(Trim(Dxs))
     
     Dim i As Integer
     For i = 1 To Sw
         tempStr = Right(Trim(Dxs), i)
         tempStr = Left(tempStr, 1)
         tempStr = Converts(tempStr)
         Select Case i
           Case 1
               If tempStr = "零" Then
                  tempStr = ""
                   Else
                  tempStr = tempStr + ""
               End If
           Case 2
               If tempStr = "零" Then
                  tempStr = "零"
                Else
                  tempStr = tempStr + "十"
               End If
           Case 3
               If tempStr = "零" Then
                  tempStr = "零"
                   Else
                  tempStr = tempStr + "百"
               End If
            Case 4
               If tempStr = "零" Then
                  tempStr = "零"
                   Else
                  tempStr = tempStr + "千"
               End If
            Case 5
               If tempStr = "零" Then
                  tempStr = "万"
                   Else
                  tempStr = tempStr + "万"
               End If
            Case 6
               If tempStr = "零" Then
                  tempStr = "零"
                   Else
                  tempStr = tempStr + "十"
               End If
            Case 7
               If tempStr = "零" Then
                  tempStr = "零"
                   Else
                  tempStr = tempStr + "百"
               End If
            Case 8
               If tempStr = "零" Then
                  tempStr = "零"
                   Else
                  tempStr = tempStr + "千"
               End If
            Case 9
               If tempStr = "零" Then
                  tempStr = "亿"
                   Else
                  tempStr = tempStr + "亿"
               End If
         End Select
    Dim TempA As String
        TempA = Left(Trim(DXStr), 1)
    If tempStr = "零" Then
      Select Case TempA
       Case "零"
            DXStr = DXStr
       Case "万"
            DXStr = DXStr
       Case "亿"
            DXStr = DXStr
       Case Else
            DXStr = tempStr + DXStr
      End Select
      Else
       DXStr = tempStr + DXStr
    End If
     Next
  
    UpNumber = DXStr
End Function
Private Function Converts(NumStr As String) As String
    Select Case val(NumStr)
      Case 0
        Converts = "零"
      Case 1
        Converts = "一"
      Case 2
        Converts = "二"
      Case 3
        Converts = "三"
      Case 4
        Converts = "四"
      Case 5
        Converts = "五"
      Case 6
         Converts = "六"
      Case 7
         Converts = "七"
      Case 8
         Converts = "八"
      Case 9
         Converts = "九"
    End Select
End Function
'中文日期
Public Function CDayStr(d As Long) As String
   Dim s As String
   Select Case d
      Case 0
        s = ""
      Case 10
        s = "初十"
      Case 20
        s = "二十"
      Case 30
        s = "三十"
      Case Else
        s = nStr2(d \ 10)  '整数除法
        s = s & nStr1(d Mod 10)
   End Select
   CDayStr = s
End Function
'计算星座归属
Public Function Constellation(m As Long, d As Long) As String
   Dim y As Long
   Dim tempDate As Date
   Dim ConstellName As String
 
   y = 2000
   tempDate = m & "/" & d & "/" & y

   Select Case tempDate
      Case #3/21/2003# To #4/19/2000#
            ConstellName = "白羊"
      Case #4/20/2000# To #5/20/2000#
            ConstellName = "金牛"
      Case #5/21/2000# To #6/21/2000#
            ConstellName = "双子"
      Case #6/22/2000# To #7/22/2000#
            ConstellName = "巨蟹"
      Case #7/23/2000# To #8/22/2000#
            ConstellName = "狮子"
      Case #8/23/2000# To #9/22/2000#
            ConstellName = "处女"
      Case #9/23/2000# To #10/23/2000#
            ConstellName = "天秤"
      Case #10/24/2000# To #11/21/2000#
            ConstellName = "天蝎"
      Case #11/22/2000# To #12/21/2000#
            ConstellName = "射手"
      Case #12/22/2000# To #12/31/2000#
            ConstellName = "摩蝎"
      Case #1/1/2000# To #1/19/2000#
            ConstellName = "摩蝎"
      Case #1/20/2000# To #2/18/2000#
            ConstellName = "水瓶"
      Case #2/19/2000# To #3/20/2000#
            ConstellName = "双鱼"
      Case Else
            ConstellName = ""
   End Select
   Constellation = ConstellName
End Function
'/////////////////////////////////////////////////////////////////////////////////////////////////////////
'以下为类内部使用的一些函数
'传回农历 y年的总天数
Private Function lYearDays(ByVal y As Long) As Long
   
'   Dim i As Long
'   Dim f As Long
'   Dim sumDay As Long
'   Dim info As Long
   
'   sumDay = 348
'   i = &H8000
'   info = LunarInfo(y - 1900) And &H1000FFFF  '屏蔽高位,
'   Do
'     f = info And i
'     If f <> 0 Then
'       sumDay = sumDay + 1
'     End If
'     i = BitRight16(i, 1)
'   Loop Until i < &H10
'   lYearDays = sumDay + leapDays(y)
    
    lYearDays = LunarYearDays(y - 1900)  '先计算出每年的天数,并形成数组,以减少以后的运算时间
End Function

'传回农历 y年m月的总天数
Private Function lMonthDays(ByVal y As Long, ByVal m As Long) As Long
  If (LunarInfo(y - 1900) And &H1000FFFF) And BitRight32(&H10000, m) Then
     lMonthDays = 30
  Else
     lMonthDays = 29
  End If
End Function

'传回农历 y年闰月的天数
Private Function leapDays(y As Long) As Long
  If leapMonth(y) Then
    If LunarInfo(y - 1900) And &H10000 Then
      leapDays = 30
    Else
      leapDays = 29
    End If
  Else
    leapDays = 0
  End If
End Function

'传回农历 y年闰哪个月 1-12 , 没闰传回 0
Private Function leapMonth(y As Long) As Long
  Dim i As Long
  i = LunarInfo(y - 1900) And &HF
  If i > 12 Then
    Debug.Print y
  End If
  leapMonth = i
End Function

'计算公历年月的天数
Private Function SolarDays(y As Long, m As Long) As Long
   Dim d As Long
   
   If (y Mod 4) = 0 Then   '闰年
      If m = 2 Then
        d = 29
      Else
        d = SolarMonth(m - 1)
      End If
   Else
      If m = 2 Then
        d = 28
      Else
        d = SolarMonth(m - 1)
      End If
   End If
   
   SolarDays = d
End Function


'//////////////////////////////////////////////////////////////////////////////////////////////////
'
'主要的函数,用公历年月日对日期对象进行初使化,在此函数内部完成对私有对象属性的设置
'
'//////////////////////////////////////////////////////////////////////////////////////////////////
Public Sub sInitDate(ByVal y As Long, ByVal m As Long, ByVal d As Long)
    Dim i As Long
    Dim leap As Long
    Dim Temp As Long
    Dim offset As Long
    
    mvarDate = m & "/" & d & "/" & y
    mvarsYear = y
    mvarsMonth = m
    mvarsDay = d
    
    '农历日期计算部分
    leap = 0
    Temp = 0
    
    offset = mvarDate - #1/30/1900#  '计算两天的基本差距
    
    For i = 1900 To 2049
        'temp = lYearDays(i)  '求当年农历年天数
        
        offset = offset - Temp
        If offset < 1 Then Exit For
    Next
    
    offset = offset + Temp
    mvarlYear = i
    
    leap = leapMonth(i) '闰哪个月
    mvarIsLeap = False
    For i = 1 To 12
        '闰月
        If leap > 0 And i = (leap + 1) And mvarIsLeap = False Then
           mvarIsLeap = True
           i = i - 1
           Temp = leapDays(mvarlYear)   '计算闰月天数
        Else
           Temp = lMonthDays(mvarlYear, i) '计算非闰月天数
         End If
    
        offset = offset - Temp
        If offset <= 0 Then Exit For
    Next
    
    offset = offset + Temp
    mvarlMonth = i
    mvarlDay = offset
        
End Sub

'//////////////////////////////////////////////////////////////////////////////////////////////////
'
'主要的函数,用农历年月日对日期对象进行初使化,在此函数内部完成对私有对象属性的设置
'
'//////////////////////////////////////////////////////////////////////////////////////////////////
Public Sub lInitDate(ByVal y As Long, ByVal m As Long, ByVal d As Long, Optional LeapFlag As Boolean = False)
    Dim i As Long
    Dim leap As Long
    Dim Temp As Long
    Dim offset As Long

    mvarlYear = y
    mvarlMonth = m
    mvarlDay = d
    
    offset = 0
    
    For i = 1900 To y - 1
       Temp = LunarYearDays(i - 1900) '求当年农历年天数
       offset = offset + Temp
    Next
    
    leap = leapMonth(y) '闰哪个月
    If m <> leap Then
       mvarIsLeap = False  '当前日期并非闰月
    Else
       mvarIsLeap = LeapFlag  '使用用户输入的是否闰月月份
    End If
    
    If (m < leap) Or (leap = 0) Then   '当闰月在当前日期后
        For i = 1 To m - 1
           Temp = lMonthDays(y, i) '计算非闰月天数
           offset = offset + Temp
        Next
    Else   '在闰月后
        If mvarIsLeap = False Then  '用户要计算非闰月的月份
             For i = 1 To m - 1
                Temp = lMonthDays(y, i) '计算非闰月天数
                offset = offset + Temp
             Next
             If m > leap Then
                Temp = leapDays(y)   '计算闰月天数
                offset = offset + Temp
             End If
             
        Else  '此时只有mvarisleap=ture,
               For i = 1 To m
                 Temp = lMonthDays(y, i) '计算非闰月天数
                 offset = offset + Temp
               Next
        End If
    End If
    
    offset = offset + d '加上当月的天数
    mvarDate = DateAdd("d", offset, #1/30/1900#)
    mvarsYear = Year(mvarDate)
    mvarsMonth = Month(mvarDate)
    mvarsDay = Day(mvarDate)

End Sub

'本模块用于打印出1900-2049年 每年农历的天数,可以用于数组初使化
'Public Sub printf()
'    Dim i As Long, j As Long
'    Dim temp(10) As Long
'    Dim base As Long
    
'    base = 1900
'    For i = 1 To 15
'       For j = 1 To 10
'         temp(j - 1) = lYearDays((i - 1) * 10 + (j - 1) + base) '求当年农历年天数
'       Next
'       Debug.Print CStr(temp(0)) & " , " & CStr(temp(1)) & " , " & CStr(temp(2)) & " , " & CStr(temp(3)) & " , " & CStr(temp(4)) & " , " & CStr(temp(5)) & " , " & CStr(temp(6)) & " , " & CStr(temp(7)) & " , " & CStr(temp(8)) & " , " & CStr(temp(9)) & " , " & " _ "
'    Next
'End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -