ipink-util
Version:
util.js
276 lines (274 loc) • 9.35 kB
TypeScript
import { DateInfo, DateValue } from './date';
export interface LunarInfo {
lunarYear?: string | number;
lunarMonth?: string | number;
lunarDay?: string | number;
lunarShengXiao?: string;
}
export interface CalendarInfo {
/** @desc 天干地支 年 **/
gzYear: string;
/** @desc 天干地支 月 **/
gzMonth: string;
/** @desc 天干地支 日 **/
gzDay: string;
/** @desc 农历 年 **/
lYear: number;
/** @desc 农历 月 **/
lMonth: number;
/** @desc 农历 日 **/
lDay: number;
/** @desc 生肖 **/
animal: string;
/** @desc 农历 汉字月 **/
monthCn: string;
/** @desc 农历 汉字日 **/
dayCn: string;
/** @desc 国际 年 **/
year: number;
/** @desc 国际 月 **/
month: number;
/** @desc 国际 日 **/
day: number;
/** @desc 是否今天 **/
isToday: boolean;
/** @desc 是否闰月 **/
isLeap: boolean;
/** @desc 是否节气 **/
isTerm: boolean;
/** @desc 是否是节日 **/
isFestival?: boolean;
/** @desc 周几 **/
week: number;
/** @desc 周几 汉字 **/
weekCn: string;
/** @desc 节气 **/
term: string | null;
/** @desc 星座 **/
astro: string;
}
declare let lunarMonth: readonly ["正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "腊"], lunarDay: readonly ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "初", "廿"], diZhi: readonly ["子鼠", "丑牛", "寅虎", "卯兔", "辰龙", "巳蛇", "午马", "未羊", "申猴", "酉鸡", "戌狗", "亥猪"];
export type LunarMonthType = (typeof lunarMonth)[number];
export type LunarDayType = (typeof lunarDay)[number];
export type DiZhiType = (typeof diZhi)[number];
export declare const sloarToLunar: (sy: number, sm: number, sd: number) => LunarInfo;
export declare const getYearMonthDay: (sy: number, sm: number, sd: number) => string;
/**
* @desc 获取时间
* @param { Date } date new Date()
*/
export declare const getYearMonthDayNew: (date?: Date) => DateInfo;
export declare const defaultLunar: {
readonly '1-1': "春节";
readonly '1-15': "元宵节";
readonly '2-2': "龙头节";
readonly '5-5': "端午节";
readonly '7-7': "七夕节";
readonly '7-15': "中元节";
readonly '8-15': "中秋节";
readonly '9-9': "重阳节";
readonly '10-1': "寒衣节";
readonly '10-15': "下元节";
readonly '12-8': "腊八节";
readonly '12-23': "小年";
};
export type LunarKeyType = keyof (typeof defaultLunar);
export declare const defaultGregorian: {
readonly '1-1': "元旦";
readonly '2-14': "情人节";
readonly '3-8': "妇女节";
readonly '3-12': "植树节";
readonly '5-1': "劳动节";
readonly '5-4': "青年节";
readonly '6-1': "儿童节";
readonly '7-1': "建党节";
readonly '8-1': "建军节";
readonly '9-10': "教师节";
readonly '10-1': "国庆节";
readonly '12-24': "平安夜";
readonly '12-25': "圣诞节";
};
export type GregorianKeyType = keyof (typeof defaultGregorian);
/**
* @desc @1900-2100区间内的公历、农历互转
* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
*/
export declare class Calendar {
constructor();
/**
* 农历1900-2100的润大小信息表
* @Array Of Property
* @return Hex
*/
lunarInfo: number[];
/**
* 公历每个月份的天数普通表
* @Array Of Property
* @return Number
*/
solarMonth: number[];
/**
* 天干地支之天干速查表
* @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
* @return Cn string
*/
Gan: string[];
/**
* 天干地支之地支速查表
* @Array Of Property
* @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
* @return Cn string
*/
Zhi: string[];
/**
* 天干地支之地支速查表<=>生肖
* @Array Of Property
* @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
* @return Cn string
*/
Animals: string[];
/**
* 24节气速查表
* @Array Of Property
* @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
* @return Cn string
*/
solarTerm: string[];
/**
* 1900-2100各年的24节气日期速查表
* @Array Of Property
* @return 0x string For splice
*/
sTermInfo: string[];
/**
* 数字转中文速查表
* @Array Of Property
* @trans ['日','一','二','三','四','五','六','七','八','九','十']
* @return Cn string
*/
nStr1: string[];
/**
* 日期转农历称呼速查表
* @Array Of Property
* @trans ['初','十','廿','卅']
* @return Cn string
*/
nStr2: string[];
/**
* 月份转农历称呼速查表
* @Array Of Property
* @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
* @return Cn string
*/
nStr3: string[];
/**
* 返回农历y年一整年的总天数
* @param lunar Year
* @return Number
* @eg:var count = calendar.lYearDays(1987) ;//count=387
*/
lYearDays(y: number): number;
/**
* 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
* @param lunar Year
* @return Number (0-12)
* @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
*/
leapMonth(y: number): number;
/**
* 返回农历y年闰月的天数 若该年没有闰月则返回0
* @param lunar Year
* @return Number (0、29、30)
* @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
*/
leapDays(y: number): number;
/**
* 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
* @param lunar Year
* @return Number (-1、29、30)
* @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
*/
monthDays(y: number, m: number): number;
/**
* 返回公历(!)y年m月的天数
* @param solar Year
* @return Number (-1、28、29、30、31)
* @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
*/
solarDays(y: number, m: number): number;
/**
* 农历年份转换为干支纪年
* @param lYear 农历年的年份数
* @return Cn string
*/
toGanZhiYear(lYear: number): string;
/**
* 公历月、日判断所属星座
* @param cMonth [description]
* @param cDay [description]
* @return Cn string
*/
toAstro(cMonth: number, cDay: number): string;
/**
* 传入offset偏移量返回干支
* @param offset 相对甲子的偏移量
* @return Cn string
*/
toGanZhi(offset: number): string;
/**
* 传入公历(!)y年获得该年第n个节气的公历日期
* @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
* @return day Number
* @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
*/
getTerm(y: number, n: number): number;
/**
* 传入农历数字月份返回汉语通俗表示法
* @param lunar month
* @return Cn string
* @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
*/
toChinaMonth(m: number): string | number;
/**
* 传入农历日期数字返回汉字表示法
* @param lunar day
* @return Cn string
* @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
*/
toChinaDay(d: number): string;
/**
* 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
* @param y year
* @return Cn string
* @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
*/
getAnimal(y: number): string;
/**
* 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
* @param y solar year
* @param m solar month
* @param d solar day
* @return JSON object
* @eg:console.log(calendar.solar2lunar(1987,11,01));
*/
solar2lunar(y: number, m: number, d: number): CalendarInfo | -1;
/**
* 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
* @param y lunar year
* @param m lunar month
* @param d lunar day
* @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
* @return JSON object
* @eg:console.log(calendar.lunar2solar(1987,9,10));
*/
lunar2solar(y: number, m: number, d: number, isLeapMonth?: boolean | number): CalendarInfo | -1;
/**
* @desc 获取时间
* @param { number } day -7 一周前 -1 昨天 0 今天 1 明天 7 一周后
* @param { DateValue } data new Date()
*/
$getDay(day: number, data: DateValue): string;
}
export declare const CalendarInstance: Calendar;
export {};