1.4.0 • Published 10 months ago

dayjs-plugin-lunar v1.4.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

Dayjs Plugin Lunar

NPM Version NPM Downloads NPM License

dayjs-plugin-lunar 是一个基于 Day.js 的扩展插件,用于方便地处理和转换农历时间。它依赖 tyme4ts 作为底层时间计算库。

安装

npm install dayjs dayjs-plugin-lunar

如果你的 npm 版本低于 7,则需要额外安装 tyme4ts:

npm install tyme4ts

快速开始

基础使用

import dayjs from "dayjs";
import { PluginLunar } from "dayjs-plugin-lunar";

// 注册插件
dayjs.extend(PluginLunar);

dayjs("2024-12-19 12:00:00").format("LMLDLhLK"); // 冬月十九午正初刻

// 转换为农历时辰
dayjs("2024-12-19 12:00:00").toLunarHour().getName(); // 午时

// 转换为农历日期
dayjs("2024-12-19 12:00:00").toLunarDay().getName(); // 十九

// 转换为农历月份
dayjs("2024-12-19 12:00:00").toLunarMonth().getName(); // 冬月

// 通过农历构造日期
dayjs.lunar(2025, 1, 1).format("YYYY-MM-DD"); // 2025-01-29

自定义配置

tyme4ts 将农历的 冬月腊月 表述为 十一月十二月dayjs-plugin-lunar 希望更遵循传统命名,对此进行了修改。若需显示 tyme4ts 的原始表述,可将 traditional 设置为 false

dayjs.extend(PluginLunar, { traditional: false });

// 转换为农历月份(使用 `tyme4ts` 原始表述)
dayjs.lunar(2024, 11, 1).toLunarMonth().getName(); // 十一月

更多用法参看测试用例

API 参考

format

基于 dayjs 原始 format 方法拓展,新增农历格式化模板

扩展的 format 模版

模板输出详情
LY甲子 乙丑 ... 癸亥干支纪年
LZ鼠 牛 ... 猪生肖
LM正月 二月 ... 腊月农历月份
LD初一 初二 ... 三十农历日期
LH子时 丑时 ... 亥时农历时辰
Lh子 丑 ... 亥农历时辰(简写)
LK初初刻 初一刻 ... 正三刻农历刻数(采用九十六刻制

示例

dayjs("2024-12-19 12:00:00").format("LYLZ年LMLDLhLK"); // 甲辰龙年冬月十九午正初刻

add / subtract

基于 dayjs 原始 add / subtract 方法拓展,新增农历单位加减

单位详情
lunar-year农历年
lunar-month农历月
lunar-day农历日
lunar-dual-hour农历时辰

示例

dayjs("2024-12-20 12:20:00")
  .add(1, "lunar-dual-hour")
  .format("YYYY-MM-DD HH:mm:ss"); // 2024-12-20 14:20:00

lunar

使用农历时间创建 Dayjs 对象

参数

  • lunarYear number 农历年
  • lunarMonth number? 农历月,1 到 12,闰月为负数
  • lunarDay number? 农历日,1 到 30
  • lunarHour number? 时,0 到 23
  • lunarMinute number? 分,0 到 59
  • lunarSecond number? 秒,0 到 59

示例

dayjs.lunar(2025, 1, 1).format('YYYY-MM-DD') // 2025-01-29

Returns Dayjs

toLunarHour

转换为农历的时辰

示例

dayjs('2024-12-19 12:00:00').toLunarHour().getName(); // 午时

Returns LunarHour tyme4ts 中的 LunarHour

toLunarDay

转换为农历的日期

示例

dayjs('2025-01-29').toLunarDay().getName(); // 初一

Returns LunarDay tyme4ts 中的 LunarDay

toLunarMonth

转换为农历的月份

示例

dayjs('2025-01-29').toLunarMonth().getName(); // 正月

Returns LunarMonth tyme4ts 中的 LunarMonth

toLunarSeason

转换为农历的季节

示例

dayjs('2025-01-29').toLunarSeason().getName(); // 孟春

Returns LunarSeason tyme4ts 中的 LunarSeason

toLunarYear

转换为农历的年份

示例

dayjs('2025-01-01').toLunarYear().getYear(); // 2024

Returns LunarYear tyme4ts 中的 LunarYear

addLunar

添加农历时间

参数

  • value number 数量
  • unit LunarUnit 单位

示例

dayjs('2024-12-20 12:00:00').addLunar(1, 'dual-hour').toLunarHour().getName(); // 未时

Returns Dayjs

subtractLunar

减去农历时间,与 addLunar 相反

参数

  • value number 数量
  • unit LunarUnit 单位

示例

dayjs('2024-12-20 12:00:00').subtractLunar(1, 'dual-hour').toLunarHour().getName(); // 巳时

Returns Dayjs

License

MIT

1.4.0

10 months ago

1.2.2

11 months ago

1.3.0

11 months ago

1.2.0

11 months ago

1.1.0

11 months ago

1.0.0

11 months ago

0.0.0

11 months ago