免费提供常见计算原因,广大网友还有计算难题的话,就上深思计算网
每日更新手机访问:https://m.wfmjggc.com/
您的位置: 主页>计算大全 >探究VB计算农历的算法

探究VB计算农历的算法

来源:www.wfmjggc.com 时间:2024-06-09 04:05:32 作者:深思计算网 浏览: [手机版]

  随着时代的发展,人们对于时间的计算越来越精,但是在中国,农历仍然是种重要的时间计算方式来源www.wfmjggc.com。VB是用的编程语言,可以用来编写计算农历的程序。那么,VB计算农历的算法是如何实现的呢?本探究这个题。

探究VB计算农历的算法(1)

什么是农历

  农历是中国古代的种时间计算方式,也称为阴历深+思+计+算+网。它是以月相为础的日历系统,每个月的开始和结束时间都是由月相决定的。农历的个月长约29.5天,年共有12个月,加上个闰月,共13个月。农历的起点是春分点,即春季开始的那www.wfmjggc.com

VB计算农历的算法

VB计算农历的算法是种叫做“太阳历-农历转换法”的算法实现的。这种算法的本思路是:根据太阳历的日期,计算出该日期在农历中的年、月、日、时、分、秒等信息。具体实现如下:

  1. 计算出太阳历的年、月、日、时、分、秒等信息来自www.wfmjggc.com

2. 根据太阳历的年,计算出该年春节的日期。

  3. 根据春节的日期,计算出该年的闰月信息。

  4. 根据闰月信息,计算出该年每个月的天原文www.wfmjggc.com

  5. 根据每个月的天,计算出该日期在农历中的年、月、日等信息。

探究VB计算农历的算法(2)

VB代码实现

下面是段用VB实现计算农历的代码:

  ```

Function GetLunarDate(ByVal SolarDate As Date) As String

  Dim LunarYear As Integer, LunarMonth As Integer, LunarDay As Integer, IsLeapMonth As Boolean

  Dim i As Integer, Days As Integer, TempDate As Date

  LunarYear = Year(SolarDate)

  LunarMonth = 1

  LunarDay = 1

  IsLeapMonth = False

TempDate = CDate("1900/1/31")

  Days = DateDiff("d", TempDate, SolarDate)

  For i = 1900 To 2100

TempDate = CDate(i & "/1/31")

  If DateDiff("d", TempDate, SolarDate) >= 0 Then

  LunarYear = i

  Days = DateDiff("d", TempDate, SolarDate)

  TempDate = CDate(i & "/2/1")

  If DateDiff("d", TempDate, SolarDate) >= 0 Then

  LunarMonth = 2

  Days = Days - 31

  End If

  Exit For

  End If

  Next

  If LunarMonth < 13 Then

For i = 1 To 12

  TempDate = GetLunarMonthDays(LunarYear, i, IsLeapMonth)

  If Days - TempDate < 0 Then

  Exit For

  End If

  Days = Days - TempDate

  LunarMonth = LunarMonth + 1

  Next

  End If

If IsLeapMonth = False Then

  LunarDay = Days + 1

  Else

LunarDay = Days

End If

  GetLunarDate = LunarYear & "年" & LunarMonth & "月" & LunarDay & "日"

  End Function

  Function GetLunarMonthDays(ByVal LunarYear As Integer, ByVal LunarMonth As Integer, ByRef IsLeapMonth As Boolean) As Integer

Dim LeapMonth As Integer, Days As Integer

LeapMonth = GetLunarLeapMonth(LunarYear)

If LunarMonth 12) Or (LeapMonth > 0 And LunarMonth > LeapMonth) Then

  Days = LunarMonthDays(LunarYear, LunarMonth)

  IsLeapMonth = False

  Else

Days = LunarMonthDays(LunarYear, LunarMonth - 1)

IsLeapMonth = True

  End If

  GetLunarMonthDays = Days

  End Function

Function GetLunarLeapMonth(ByVal LunarYear As Integer) As Integer

  Dim i As Integer, LeapMonth As Integer

  LeapMonth = LunarMonthDays(LunarYear, 12) Mod 29

  For i = 11 To 1 Step -1

  If LunarMonthDays(LunarYear, i) Mod 29 = LeapMonth Then

  Exit For

  End If

  Next

  GetLunarLeapMonth = i

End Function

  Function LunarMonthDays(ByVal LunarYear As Integer, ByVal LunarMonth As Integer) As Integer

  Dim i As Integer, Days As Integer

Days = LunarMonthData(LunarYear) And &HF

  For i = 1 To LunarMonth - 1

  Days = Days + IIf((LunarMonthData(LunarYear) And (1 0, 1, 0)

  Next

  If GetLunarLeapMonth(LunarYear) = LunarMonth And (LunarMonthData(LunarYear) And &F0000) > 0 Then

  Days = Days + 1

End If

LunarMonthDays = Days

End Function

Function LunarMonthData(ByVal LunarYear As Integer) As Integer

  LunarMonthData = LunarMonthDataArray(LunarYear - 1900)

  End Function

Const LunarMonthDataArray = &H4BD8F, &H4AE51, &HA5745, &H54DA0, &HAB5A5, &H4DA50, &H4DAA4, &HA5B60, &HA57A6, &H52B5F, &H52D25, &HA5A2E, &H62E0E, &HADA2E, &H6B2E0, &H6D160, &HAF4AE, &HAB4AD, &H4B250, &H4B55E, &HAAE51, &H55D42, &HA5B2B, &H52B2A, &H616AF, &HAB55A, &HAD4A9, &H55AA5, &HABA92, &H6A93F, &H6AA5F, &HAD529, &H5D255, &H5D4D2, &HADA4B, &H55D25, &H4AE57, &HA574B, &H526D2, &H535A0, &HA9AA5, &HAA6D0, &H4A6AE, &HAAAD7, &H55B57, &H52B45, &HA

0% (0)
0% (0)
版权声明:《探究VB计算农历的算法》一文由深思计算网(www.wfmjggc.com)网友投稿,不代表本站观点,版权归原作者本人所有,转载请注明出处,如有侵权、虚假信息、错误信息或任何问题,请尽快与我们联系,我们将第一时间处理!

我要评论

评论 ( 0 条评论)
网友评论仅供其表达个人看法,并不表明好好孕立场。
最新评论

还没有评论,快来做评论第一人吧!
相关文章
  • 计算机专业的学生:从零到一的技术之路

    计算机专业是一个充满挑战和机遇的领域。在计算机专业的学生们的眼中,计算机不仅仅是一种工具,更是一种思维方式和一种生活方式。在这个数字化时代,计算机专业的学生们扮演着越来越重要的角色,他们不仅仅是技术人才,更是创新者和领袖。计算机专业的学习内容

    [ 2024-06-09 03:55:25 ]
  • 如何正确计算东航招飞体检体重标准?

    随着社会的不断发展和进步,航空业的需求也在逐渐增加。而作为航空业的重要组成部分,飞行员的招募也变得越来越严格。在东航招飞过程中,体检是非常重要的一环,而体重标准也是其中的一项关键指标。那么,如何正确计算东航招飞体检体重标准呢?下面就来详细介绍一下。

    [ 2024-06-09 03:43:22 ]
  • 评职称取消计算机证,是助力人才培养还是误导职场?

    近日,有关部门宣布将取消计算机证书在评职称中的加分政策,引起了广泛关注和讨论。这一政策的出台,一方面是为了减少职称评审中的“灰色利益”,另一方面也是为了更好地促进人才培养和职场竞争力的提升。然而,这一政策的实施是否真正符合人才培养和职场竞争的需要,还需要深入探讨。一、职称评审中的“灰色利益”

    [ 2024-06-09 03:21:29 ]
  • 长治住房公积金计算方式

    公积金是指由雇主和员工共同缴纳的一种住房储蓄制度,旨在帮助员工在购房时提供一定的资金支持。长治市作为山西省的一个重要城市,也实行了住房公积金制度。本文将介绍长治住房公积金的计算方式,帮助人们更好地了解和使用这一制度。一、缴存基数缴存基数是指员工和雇主每月缴纳住房公积金的基础金额。

    [ 2024-06-09 02:37:38 ]
  • 河北推广计算机硬件:助力数字化转型

    近年来,计算机技术的快速发展已经深刻地改变了人们的生活和工作方式。在这个数字化时代,计算机硬件作为计算机系统的重要组成部分,对于提高计算机性能、提升工作效率、推动数字化转型都发挥着不可替代的作用。而在河北,计算机硬件的推广与应用已经成为了数字化转型的重要支撑。一、河北计算机硬件市场现状

    [ 2024-06-09 02:01:23 ]
  • 计算机购置项目编制依据

    随着信息化时代的到来,计算机已经成为现代社会中不可或缺的一部分,对于企业和机关事业单位来说,计算机的使用也变得越来越重要。但是,在购置计算机的过程中,需要遵循一定的规定和程序,以确保采购过程的合法性、公正性和透明度。本文将介绍计算机购置项目的编制依据。一、政策法规

    [ 2024-06-09 01:37:29 ]
  • 分段计算法的解决问题

    引言计算机科学中有一种算法叫做分段计算法,它可以将一个大问题分成多个小问题来解决,从而提高计算效率。本文将介绍分段计算法的基本原理和应用,以及它在解决实际问题中的优势。分段计算法的基本原理分段计算法是一种将大问题分解成多个小问题来解决的算法。

    [ 2024-06-09 01:27:39 ]
  • 计算机最好的大学排名

    随着信息技术的不断发展,计算机科学已经成为了当今世界最为热门的学科之一。越来越多的学生选择了计算机作为自己的专业,而各大高校也纷纷开设了相关的课程和专业。那么,计算机最好的大学排名是怎样的呢?首先,我们需要明确一个问题:计算机最好的大学排名并不存在一个统一的标准。不同的人对于“最好”的定义也不尽相同。

    [ 2024-06-09 01:17:35 ]
  • 信阳计算机室文化墙内容

    1. 计算机知识计算机室文化墙上贴满了各种计算机知识,包括操作系统、编程语言、数据结构等等。这些知识点对于计算机专业的学生来说非常重要,可以帮助他们更好地掌握计算机技术,提高自己的技能水平。2. 优秀作品展示计算机室文化墙上还展示了许多优秀的作品,包括计算机程序、网站、APP等等。这些作品不仅是学生们的努力成果,也是对计算机技术的展示和推广。

    [ 2024-06-09 01:06:04 ]
  • 计算机文化基础在路上教程

    第一章:计算机基础知识计算机是一种能够按照指令自动进行数据处理的电子设备。计算机的发展历程可以追溯到二十世纪四十年代,经过几十年的发展,计算机已经成为现代社会不可或缺的工具。本章将介绍计算机的基本概念、组成部分和工作原理。第二章:操作系统

    [ 2024-06-09 00:54:29 ]