首页 > 其他分享 >公历闰年和农历闰月的计算方法

公历闰年和农历闰月的计算方法

时间:2023-01-04 15:46:38浏览次数:60  
标签:公历 闰年 29 354 384 闰月 365

世界上的历法共有三类

  1. 阳历,就是以地球绕太阳运转一圈的时间为一年,年的月数和月的日数可人为规定;又称为公历。

  2. 阴历,就是以月球绕地球运转一圈的时间为一个月,只有年的月数可以人为规定;(已改进为阴阳历)

  3. 阴阳历,就是以月球平均绕地球转一圈的时间为一月,但通过设置闰月,使一年的平均天数又与地球平均绕太阳转一圈的时间相等,又称农历。(农历是以阴历为基础,融合阳历成分而形成的一种历法。)

阴历是中国传统历法之一,也被称为旧历、汉历、古历等,辛亥革命后改用西方太阳历(公历),而现代叫法的农历属于阴阳合历。

农历是阴历。农历是我国传统历法,又有阴历、华历、夏历、汉历、中历等名称,但农历并不是阴历而是一种阴阳合历,取月相的变化周期即朔望月为月的长度,参考太阳回归年为年的长度,通过设置二十四节气以及闰月以使平均历年与回归年相适应。

闰月和闰年有什么区别?

  1. 闰年是公历的名词。公历规定每400年97闰,不逢百的年份能被4整除的,就是闰年,这一年的2月是29天;其余年份的2月是28天。除了2月以外,其它月份的天数没有平年和闰年的区别。

闰年是固定的,也就是能被4整除的年就是闰年,每四年一次,闰年比平年多一天,也就是366天。

  1. 闰月是中国的农历的名词。农历因为是阴阳历,所以要兼顾月亮和太阳。由于每个月都要保证十五或者十六是满月,所以每个月大约是29.5天。一般年份12个月就只有355天。这样一年年累计下来,会和季节脱节(因为地球公转周期是365天)。所以每三年左右要加一个月,使得农历年在长期平均上与公历年的长度一致,大约是365.2425天。加的这一个月就叫做闰月。农历的闰月大概是十九年七闰。

闰月指的是阴历,每隔3年(有的可能多)就有一个闰月,有闰月的阴历每年大概是384天。

列举近年的闰年闰月时间

年份 生肖 公历闰年 总天数 农历闰月 闰月天数 总天数
1990 365 闰五月 29 384
1991 365 354
1992 闰年 366 354
1993 365 闰三月 29 383
1994 365 355
1995 365 闰八月 29 384
1996 闰年 366 354
1997 365 355
1998 365 闰五月 29 384
1999 365 354
2000 闰年 366 354
2001 365 闰四月 29 384
2002 365 354
2003 365 355
2004 闰年 366 闰二月 29 384
2005 365 354
2006 365 闰七月 29 385
2007 365 354
2008 闰年 366 354
2009 365 闰五月 29 384
2010 365 354
2011 365 354
2012 闰年 366 闰四月 29 384
2013 365 355
2014 365 闰九月 29 384
2015 365 354
2016 闰年 366 355
2017 365 闰六月 30 384
2018 365 354
2019 365 354
2020 闰年 366 闰四月 29 384
2021 365 354
2022 365 355
2023 365 闰二月 29 384
2024 闰年 366 354
2025 365 闰六月 29 384
2026 365 354
2027 365 354
2028 闰年 366 闰五月 29 384

Java闰年闰月的计算方法

引入依赖:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.5</version>
</dependency>

Java代码:

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.chinese.LunarInfo;

public class ChineseMonth {
    private static final String[] MONTH_NAME = {"正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "腊"};

    public static void main(String[] args) {
        for (int year = 1990; year < 2029; year++) {
            // 生肖
            String zodiac = DateUtil.getChineseZodiac(year);
            // 公历闰年
            String leapYear = DateUtil.isLeapYear(year) ? "闰年" : "";
            String yearDays = DateUtil.lengthOfYear(year) + "";
            // 农历闰月
            int month = LunarInfo.leapMonth(year);
            String chineseMonthName = month > 0 ? "闰" + MONTH_NAME[month - 1] + "月" : "";
            String chineseMonthDays = month > 0 ? LunarInfo.leapDays(year) + "" : "";
            String chineseyearDays = LunarInfo.yearDays(year) + "";
            System.out.println("|" + year + "|" + zodiac + "|" + leapYear + "|" + yearDays + "|" + chineseMonthName + "|" + chineseMonthDays + "|" + chineseyearDays);
        }
    }
}

标签:公历,闰年,29,354,384,闰月,365
From: https://www.cnblogs.com/zhaojinhui/p/17025030.html

相关文章

  • 程序:运用函数计算1000到2000的闰年
    #include<stdio.h>intis_leap_year(intn){if((n%4==0&&n%100!=0)||(n%400==0)){return1;}else{return0;}}intmain(){inty......
  • 用c语言打印1000到2000的闰年
    #include<stdio.h>intmain(){intyeaar=0;for(year=1000;year<=2000;year++){if(year%4==0&&year%100!=0)printf("%d",year);elaeif(year%400==0)......
  • 打印1000到2000的闰年
    闰年的两种判断方法:1.能被四整除且不能被100整除;2.能被400整除答案1:可以使用两个if语句来打印#include<stdio.h>intmain(){intyear=0;for(year=1000;year<=2000;year......
  • 调用一个函数判断某年是否为闰年
    intis_leap_year(intx){ if((x%4==0&&x%100!=0)||(x%400==0)) { return1; } else return0;}intmain(){ intyear=0; printf("请输入年份\n"); ......
  • 判断闰年小妙招
    问题:判断1000到2000之间的闰年并打印分析:首先,明白判断闰年的方法(1)能被4整除,并且不能被100整除(2)能够被400整除    即:4年一闰并且百年不闰,每400年再闰一次然后用循环......
  • 判断闰年(自定义函数)
    #pragmawarning(disable:4996)#include<stdio.h>panduanrunnian(intn){if((n%4==0&&n%100!=0)||(n%400==0)){return1;}elsereturn0;}......
  • php 农历公历转换函数
    classlunar{#农历每月的天数var$everyCMonth=array(0=>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1),1=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2),2=>arr......
  • 1000-2000年之间的闰年
    intmain(){ inti; intcount=0; for(i=1000;i<=2000;i++) { if(i%4==0&&i%100!=0) { printf("1000-2000年之间的闰年:%d\n",i); count++; } el......
  • C++ 判断闰年简单代码
    闰年闰年分为普通闰年和世纪闰年1582年以来的置闰规则:普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。世纪闰年:公历年份是整百数的......
  • 输出闰年
    #pragmawarning(disable:4996)#include<stdio.h>intmain(){intm=0;//开始年份intn=0;......