Javascript 公历农历互转

3,651 阅读3分钟

介绍

公历和农历互转在中国文化中有广泛的应用,可以满足人们在日常生活中的很多需求:

  1. 节日查询:在中国,很多节日是按照农历日期计算的,如春节、中秋节等。通过将公历日期转换为农历日期,可以轻松地查询某个节日的日期。
  2. 日历显示:在日历应用程序中,用户可以选择查看公历或农历日期。通过将公历日期和农历日期相互转换,可以实现日历的双重显示。
  3. 生肖年份:在中国,人们通常根据自己的生肖年份来计算自己的年龄。通过将公历日期转换为农历日期,可以确定某个人的生肖年份。
  4. 传统节气:中国的传统节气是按照太阳的运行来计算的,而不是按照公历日期。通过将公历日期转换为农历日期,可以确定某个日期是否是传统节气。
  5. 婚礼、生日等重要纪念日:在中国,很多人会根据自己的生肖、农历日期等选择结婚或庆祝生日。通过将公历日期转换为农历日期,可以确定某个日期是否是重要的纪念日。

公历和农历之间的转换

要在 JavaScript 中进行公历和农历之间的转换,可以使用一些库或算法来完成。

  1. js-calendar-converter:这是一个 JavaScript 库,可用于将公历日期转换为农历日期,以及将农历日期转换为公历日期。它使用中国的农历算法,并提供了一些附加功能,如节气和节日查询。
  2. moment-lunar:这是一个 Moment.js 插件,可以将公历和农历之间相互转换。它使用中国的农历算法,并提供了 Moment.js 的所有功能,如格式化、语言本地化等。
  3. lunar.js:这是一个 JavaScript 库,可以将公历日期转换为农历日期。它使用中国的农历算法,并提供了一些附加功能,如节气和节日查询。

js-calendar-converter

  1. 以下是一个将公历日期转换为农历日期的示例代码:
// 导入库
const calendar = require('js-calendar-converter');
// 将公历日期转换为农历日期
const lunarDate = calendar.solar2lunar(2023, 4, 19);
// 输出农历日期
console.log(lunarDate);

以下是结果:

{
  date: '2023-4-19',
  lunarDate: '2023-2-29',
  festival: null,
  lunarFestival: null,
  lYear: 2023,
  lMonth: 2,
  lDay: 29,
  Animal: '兔',
  IMonthCn: '闰二月',
  IDayCn: '廿九',
  cYear: 2023,
  cMonth: 4,
  cDay: 19,
  gzYear: '癸卯',
  gzMonth: '丙辰',
  gzDay: '丁未',
  isToday: true,
  isLeap: true,
  nWeek: 3,
  ncWeek: '星期三',
  isTerm: false,
  Term: null,
  astro: '白羊座'
}

这表示 2023 年 4 月 19 日是农历闰 2 月 29 日。

c开头的是公历各属性值 l开头的自然就是农历咯 gz开头的就是天干地支纪年的数据啦

  1. 以下是一个将农历日期转换为公历日期的示例代码:
// 导入库
const calendar = require('js-calendar-converter');
// 将农历日期转换为公历日期
const solarDate = calendar.lunar2solar(2023, 3, 24, false);
// 输出公历日期
console.log(solarDate);

以下是结果:

{
  date: '2023-5-13',
  lunarDate: '2023-3-24',
  festival: null,
  lunarFestival: null,
  lYear: 2023,
  lMonth: 3,
  lDay: 24,
  Animal: '兔',
  IMonthCn: '三月',
  IDayCn: '廿四',
  cYear: 2023,
  cMonth: 5,
  cDay: 13,
  gzYear: '癸卯',
  gzMonth: '丁巳',
  gzDay: '辛未',
  isToday: false,
  isLeap: false,
  nWeek: 6,
  ncWeek: '星期六',
  isTerm: false,
  Term: null,
  astro: '金牛座'
}

这表示 2023 年农历 3 月 24 日的公历是 2023 年 5 月 13 日。

  1. 在线示例jjonline.github.io/calendar.js…

浏览器原生 JS API

目前只能将公历日期转为农历日期。

const toCnDate = date => date.toLocaleString('zh-u-ca-chinese', { dateStyle: 'full' }) + ' ' + date.toLocaleTimeString(0, { hour12: false });
toCnDate(new Date); // 2022壬寅年九月廿九星期一 21:45:11