阳历和农历差几个月 农历和阳历的差了几月

时间:2023-12-09 07:24:52 姓名算命网

<script>

//数字转中文

function toChineseNum(num){

const units = ['', '十', '百', '千', '万'];

const nums = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];

let result = '';

let count = 0;

while(num > 0){

let singleNum = num % 10;

result = (singleNum !== 0 ? nums[singleNum] + units[count] :'')+ result;

num = Math.floor(num / 10);

count++;

}

return result;

//获取某一年的农历闰几月

function getLeapMonth(year){

const leapMonthMap = [

0x04bd8, 0x04ae0, 0x094a0, 0x049b0, 0x049b0, 0x0a4d0,

0x0d250, 0x0d520, 0x0d930, 0x0d530, 0x0b5a0, 0x056d0,

0x04ad0, 0x0a4d0, 0x0d4d0, 0x0d250, 0x0d520, 0x0daa0,

阳历和农历差几个月 农历和阳历的差了几月

0x16aa0, 0x0ad50, 0x055d0, 0x04ae0, 0x0a570, 0x14550,

0x09ad0, 0x049b0, 0x0a4b0, 0x1a4b0, 0x06a50, 0x06d40,

0x1ab40, 0x095b0, 0x04ad0, 0x0aab0, 0x0a4b0, 0x0aa50,

0x1b250, 0x06d20, 0x0ada0, 0x14b63

return leapMonthMap[year - 1900] & 0xf;

//获取某一年闰月是大月还是小月

function getLeapMonthDays(year){

return getLeapMonth(year)> 0 ? 30 :29;

//获取农历的天干地支年

function getLunarYearName(year){

const gan = "甲乙丙丁戊己庚辛壬癸";

const zhi = "子丑寅卯辰巳午未申酉戌亥";

return gan.charAt((year - 4)% 10)+ zhi.charAt((year - 4)% 12);

//获取农历的天干地支月

function getLunarMonthName(month, leapMonth){

const monthName = "正二三四五六七八九十冬腊";

let name = monthName.charAt(month - 1);

if(leapMonth > 0 && leapMonth === month + 1){

name = "闰" + name;

return name + '月';

//获取农历的天干地支日

function getLunarDayName(day){

const dayName = {

0:'初',

1:'十',

2:'廿',

3:'三'

};

const num = day % 10 === 0 ? 9 :day % 10 - 1;

const unit = Math.floor(day / 10);

return unit > 0 ? (unit === 1 ? '初十' :dayName[unit] + '十')+ (num === 0 ? '':num == 9 ? '九' :toChineseNum(num + 1)):dayName[unit] + toChineseNum(num + 1);

//获取农历日期

function getLunarDate(year, month, day){

const lunarDate = {};

//农历年

lunarDate.year = getLunarYearName(year);

//农历月

lunarDate.month = getLunarMonthName(month, getLeapMonth(year));

//农历日

lunarDate.day = getLunarDayName(day);

return lunarDate;

//计算阳历日期的农历日期

function calculateLunarDate(date){

const solarDate = new Date(date);//转换为标准时间

const [year, month, day] = [solarDate.getFullYear, solarDate.getMonth + 1, solarDate.getDate];

//查找农历年

let lunarYear = 1900;

let days = 0;

while(days < year - 1900 + 1e4){

days += (getYearDays(lunarYear += 1));

lunarYear -= 1;

//查找农历月和农历日

let lunarMonth = 1;

let leapMonth = getLeapMonth(lunarYear);

let leapMonthFlag = false;//闰月标志位

let lunarDay = 1;

days += getYearDays(lunarYear);

if(leapMonth > 0 && month > leapMonth){

lunarMonth = month + 1;

}else{

lunarMonth = month;

days += getMonthDays(lunarYear, lunarMonth);

days += day - 1;

if(days > getYearDays(lunarYear)){

days -= getYearDays(lunarYear);

lunarYear += 1;

if(leapMonth > 0 && lunarMonth > leapMonth){

lunarMonth += 1;

if(leapMonth > 0 && lunarMonth === leapMonth){

leapMonthFlag = true;

if(lunarMonth > 12){

lunarMonth = 1;

lunarDay = days;

if(days === getYearDays(lunarYear)){

lunarDay = 1;

leapMonthFlag = false;

//返回农历日期

return getLunarDate(lunarYear, lunarMonth, lunarDay);

//获取某一年的天数

function getYearDays(year){

let sum = 348;

for(let i = 0x8000; i > 0x8; i >>= 1){

sum += (yearInfo[year - 1900] & i)!== 0 ? 1 :0;

return sum + getLeapMonthDays(year);

//获取某一年某一月的天数

function getMonthDays(year, month){

return (yearInfo[year - 1900] & (0x10000 >> month))!== 0 ? 30 :29;

//农历年信息

const yearInfo = [

0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x07555,

0x056a0, 0x096d0, 0x04dd5, 0x04ae0, 0x0a5b0, 0x14573,

0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, 0x0aea6, 0x0ab50,

0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950,

0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ae0, 0x0a4d0,

0x0d4d4, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0, 0x056d0,

0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255,

0x06d20, 0x0ada0, 0x14b63

/*部分*/

const abstract = '阳历和农历差几个月?什么是农历和阳历?阳历和农历之间相差了几个月呢?下面将从多个方面详细说明阳历和农历差几个月,带你了解农历和阳历的差距。了解农历和阳历的差异是了解传统文化的一部分,对于保护和传承文化具有重要意义。我们从历法的基本概念和计算方法入手,通过实例分析,深入浅出地解释了阳历和农历的差异,希望能给带来启发和帮助。';

//阳历和农历的基本概念

const concept = '

【1、阳历和农历的基本概念】

阳历,即公历,是以地球绕太阳一周为周期所确定的历法。它根据地球绕太阳的公转周期(地球公转周期为365.2425天)安排年、月、日等时间单位。阳历具有公正锐利的特点,与世界主流文化相通。

农历,即阴历,是根据月亮的圆缺和地球绕太阳公转的规律制定的历法。它以地月关系和月相周期(约为29.53天)作为计算基础,以月相变化安排节气、月份等时间单位。

//以农历方向撰写阳历和农历差几个月

const direction = '

【2、农历方向撰写阳历和农历差几个月】

阳历和农历是不同天文现象的计算方法,它们之间相差的月份并不固定。一般来说,阳历的一个月份大约相当于农历的一月零三天左右。但由于农历的月份是按照月亮的周期来计算的,所以每个月的天数不固定,导致阳历和农历的差异也有所不同。

例如,阳历的一月对应农历的腊月二十五到大年初五,而阳历的二月对应农历的正月初六到二月初七。所以阳历和农历的差距是具体情况而定的,需要具体计算才能得出准确的差值。

//阳历和农历的例子

const example = '

【3、阳历和农历的例子】

为了更好地理解阳历和农历之间的差距,我们来看看一个例子。假设我们要计算2021年10月1日的农历日期,则可以按照以下步骤进行:

1.计算1900年到2020年共经历了多少个闰月。根据数据计算可得闰月数为26个。

2.计算2021年到当年春节(2022年2月1日)之间经历了多少天。2022年春节是辛丑年,从2021年4月11日(实为4月12日)到2022年1月31日,共经历了296天。

3.根据农历算法,2021年10月1日为农历九月初四。

通过这个例子可以看出,阳历和农历之间实际相差了几个月,并且具体相差的天数也是可以计算出来的。

//总结归纳

const summary = '

【4、总结归纳】

综上所述,阳历和农历之间的差距是不固定的,一般来说,阳历的一个月份大约相当于农历的一月零三天左右。然而,由于农历的月份是根据月亮的周期来计算的,所以每个月的天数不一样,导致阳历和农历的差距也有所不同。

在具体计算阳历和农历差距时,可以借助公式和工具来实现。

读过此篇文章的网友还读过: