WebberUI

農曆國曆對照日期選擇器(React)

國曆與農曆雙軌對照的 React 月曆元件:每一格標註農曆日、二十四節氣與傳統節日,可一鍵切換以農曆或國曆為主軸選日。

這是 WebberUI Pro 元件

上線活動期間免費:註冊或登入後,在上方預覽區按「複製安裝指令」就能直接安裝,不需付費、不用綁信用卡。下方那條指令未登入時會回 401。

怎麼安裝 Pro 元件 →查看方案 →

國曆農曆對照月曆:每格顯示國曆大字+農曆小字(初一顯示月名),節氣與傳統節日以色點與籤條標註,頂部可切換國曆/農曆檢視,選中日在底部顯示完整對照(如「丙午年(馬年)五月初五」)。內建 2026 年(丙午馬年)全年對照表,零依賴、免查詢 API。

載入預覽⋯
npx shadcn@latest add "https://webberui.com/r/lunar-date-picker.json?t=<安裝 token>"

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

2
<LunarDatePicker />

安裝

npx shadcn@latest add "https://webberui.com/r/lunar-date-picker.json?t=<安裝 token>"

或在 components.json 設定 registries 後,改用 @webberui/lunar-date-picker 安裝。

使用

import { LunarDatePicker } from "@/components/ui/lunar-date-picker";

const [date, setDate] = React.useState<Date | null>(new Date(2026, 5, 19));

<LunarDatePicker
  value={date}
  onChange={(d, lunar) => {
    setDate(d);
    console.log(lunar.ganzhi, lunar.month, lunar.day); // 丙午 五月 初五
  }}
/>;

也可直接使用查表函式 getLunarInfo2026(date) 取得任一 2026 年日期的農曆資訊(超出範圍回傳 null)。

資料範圍:內建對照表僅涵蓋國曆 2026-01-01 ~ 2026-12-31(台北時區曆書,含二十四節氣與主要節日)。如需其他年份,依原始碼中相同格式擴充月段資料,或改接 lunar-javascript 等完整曆法庫。

Props

Prop型別預設值說明
valueDate | nullnull目前選中的日期,需落在 2026 年,否則視為未選取
onChange(date: Date, lunar: LunarInfo) => void選擇日期時回呼,lunar 含干支年、生肖、農曆月日、節氣與節日
year20262026對照表年份;內建資料僅涵蓋 2026
defaultMonthnumber1未提供 value 時預設顯示的月份(1~12)
classNamestring透傳到外層卡片容器

LunarInfo 欄位:ganzhi(干支年)、zodiac(生肖)、month(農曆月名)、day(農曆日名)、dayIndex(日序 1~30)、solarTerm?(節氣)、festival?(節日)。

可及性

  • 每個日期為原生 button,附完整 aria-label(國曆日期+農曆日+節日節氣),可用 Tab/Enter 鍵盤操作
  • 檢視切換與選中日以 aria-pressed 標示狀態,換月按鈕附「上個月/下個月」標籤並在年份邊界停用
  • 使用者系統開啟「減少動態效果」時,停用換月滑動、選取彈跳與面板過場動畫,改為即時切換
  • 「今天」標記於掛載後才計算,SSR 與客戶端渲染結果一致,不會產生 hydration 錯誤

本頁目錄