本文描述了自己写了一个 Typescript 日历库。
1 数据结构
一个日期使用 CalendarDate
类表示,其属性如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| CalendarDate { lYear: 2016, lMonth: 11, lDay: 8, animal: '猴', lMonthCn: '冬月', lDayCn: '初八', sYear: 2016, sMonth: 12, sDay: 6, gzYear: '丙申', gzMonth: '己亥', gzDay: '壬戌', isToday: false, isLeap: false, nWeek: 2, nWeekCn: '星期二', isTerm: false, term: null, astro: '射手座' }
|
2 创建日期对象
1
| import { CalendarDate,Calendars } from 'calendars';
|
2.1 公历转农历
使用 Calendars.solar2lunar()
或者 Calendars.fromSolarDate()
从农历日期创建 CalendarDate
对象。
1 2
| let date:CalendarDate = Calendars.solar2lunar(); date.format('{sYear}年{sMonth}月{sDay}日')
|
2.2 农历转公历
使用 Calendars.lunar2solar()
或者 Calendars.fromLunarDate()
从农历日期创建 CalendarDate
对象。
1 2
| let date2:CalendarDate = Calendars.lunar2solar(2017, 6, 1, true); date.format('{sYear}年{sMonth}月{sDay}日')
|
2.3 从通用字符串创建
1 2
| let date3:CalendarDate = Calendars.fromDateString('2017060111'); date3.format('{sYear}年{sMonth}月{sDay}日')
|
3 工具类
3.1 日期间隔
1 2 3 4 5 6
| date2.delta() date2.delta(date) date2.delta({sYear:2017,sMonth:7,sDay:23}) Calendars.delta(date, date2); Calendars.delta({sYear:2016,sMonth:12,sDay:5}, {sYear:2017,sMonth:7,sDay:23})
|
3.2 日期推算
1 2 3 4 5 6 7 8 9 10 11
|
date2.offset(2)
date2.after(2)
date2.offset(-2)
date2.before(2)
|