关于 shabbat-times
通过 Hebcal API 获取安息日时间和犹太历数据的技能,也介绍希伯来日期转换及按地点查询。
主要功能
- 01按地点获取安息日时间
- 02查询犹太历事件
- 03转换公历与希伯来历日期
- 04使用坐标或 GeoNames ID
适用场景
- 01显示当地烛光点燃和哈夫达拉时间
- 02构建犹太节日日历
- 03将公历日期转换为希伯来日期
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ hoodini/ ai-agents-skills --skill shabbat-times安装后在 Claude Code 中输入/shabbat-times确认已加载。
详细介绍
犹太历与安息日时间
通过 Hebcal API 获取安息日时间和犹太历数据。
快速开始
// Get Shabbat times for a location
const response = await fetch(
'https://www.hebcal.com/shabbat?cfg=json&geonameid=5128581&M=on'
);
const data = await response.json();
安息日时间 API
按 GeoNames ID 查询(推荐)
const url = new URL('https://www.hebcal.com/shabbat');
url.searchParams.set('cfg', 'json');
url.searchParams.set('geonameid', '5128581'); // New York
url.searchParams.set('M', 'on'); // Include Havdalah
const response = await fetch(url);
const data = await response.json();
// Response
{
"title": "Hebcal New York January 2025",
"items": [
{
"title": "Candle lighting: 4:28pm",
"date": "2025-01-10T16:28:00-05:00",
"category": "candles"
},
{
"title": "Parashat Shemot",
"date": "2025-01-11",
"category": "parashat"
},
{
"title": "Havdalah: 5:31pm",
"date": "2025-01-11T17:31:00-05:00",
"category": "havdalah"
}
]
}
按坐标查询
const url = new URL('https://www.hebcal.com/shabbat');
url.searchParams.set('cfg', 'json');
url.searchParams.set('latitude', '32.0853');
url.searchParams.set('longitude', '34.7818');
url.searchParams.set('tzid', 'Asia/Jerusalem');
犹太历 API
const url = new URL('https://www.hebcal.com/hebcal');
url.searchParams.set('cfg', 'json');
url.searchParams.set('v', '1');
url.searchParams.set('year', '2025');
url.searchParams.set('month', 'x'); // All months
// Optional parameters
url.searchParams.set('maj', 'on'); // Major holidays
url.searchParams.set('min', 'on'); // Minor holidays
url.searchParams.set('mod', 'on'); // Modern holidays
url.searchParams.set('nx', 'on'); // Rosh Chodesh
url.searchParams.set('ss', 'on'); // Special Shabbatot
url.searchParams.set('s', 'on'); // Weekly parsha
const response = await fetch(url);
const holidays = await response.json();
希伯来日期转换
// Gregorian to Hebrew
const url = new URL('https://www.hebcal.com/converter');
url.searchParams.set('cfg', 'json');
url.searchParams.set('gy', '2025');
url.searchParams.set('gm', '1');
url.searchParams.set('gd', '15');
const response = await fetch(url);
const data = await response.json();
// { "hy": 5785, "hm": "Tevet", "hd": 15, "hebrew": "ט״ו בטבת תשפ״ה" }
React Hook
import { useState, useEffect } from 'react';
interface ShabbatTimes {
candleLighting: Date | null;
havdalah: Date | null;
parsha: string | null;
}
function useShabbatTimes(geonameid: string) {
const [times, setTimes] = useState<ShabbatTimes | null>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
async function fetchTimes() {
const url = new URL('https://www.hebcal.com/shabbat');
url.searchParams.set('cfg', 'json');
url.searchParams.set('geonameid', geonameid);
url.searchParams.set('M', 'on');
const response = await fetch(url);
const data = await response.json();
const result: ShabbatTimes = {
candleLighting: null,
havdalah: null,
parsha: null
};
for (const item of data.items) {
if (item.category === 'candles') {
result.candleLighting = new Date(item.date);
} else if (item.category === 'havdalah') {
result.havdalah = new Date(item.date);
} else if (item.category === 'parashat') {
result.parsha = item.title.replace('Parashat ', '');
}
}
setTimes(result);
setLoading(false);
}
fetchTimes();
}, [geonameid]);
return { times, loading };
}
常用 GeoNames ID
| 城市 | GeoNames ID |
|---|---|
| 耶路撒冷 | 281184 |
| 特拉维夫 | 293397 |
| 纽约 | 5128581 |
| 洛杉矶 | 5368361 |
| 伦敦 | 2643743 |
| 巴黎 | 2988507 |
资源
- Hebcal API 文档:https://www.hebcal.com/home/developer-apis
评论
支持 Markdown