增加二十四节气的显示

master 1.1.0
宇天 2021-12-07 11:13:21 +08:00
parent 6ac40d81c3
commit 7d2d5841f0
6 changed files with 235 additions and 13 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"name": "bash-calendar",
"description": "终端版万年历",
"version": "1.0.2",
"version": "1.1.0",
"author": "yutent <yutent.io@gmail.com>",
"bin": {
"calendar": "index.js",

View File

@ -67,7 +67,7 @@ export function getCalendarTable(year, month) {
tmp.weekend = week === 0 || week === 6
tmp.picked = !!isPicked({ year, month, day: i }, today)
tmp.lunar = lunar.short
tmp.highlight = !!lunar.festival
tmp.highlight = !!lunar.festival || !!lunar.solarTerms
} else {
// 从上个月中补齐第1周
tmp.grey = 1
@ -137,7 +137,7 @@ function drawTbody(year, month) {
case 1:
if (tmp.picked) {
tr += ' ' + chalk.bgRed.whiteBright.bold(' ' + tmp.day + ' ') + ' ' + VLINE
tr += ' ' + chalk.bgBlue.whiteBright.bold(' ' + tmp.day + ' ') + ' ' + VLINE
} else {
// 有grey字段的, 优先置灰, 这种为 非本月份的日期
if (tmp.grey) {
@ -161,7 +161,7 @@ function drawTbody(year, month) {
if (tmp.picked) {
tr +=
' ' +
chalk.bgRed.white.bold(' '.repeat(pad) + tmp.lunar + ' '.repeat(pad)) +
chalk.bgBlue.white.bold(' '.repeat(pad) + tmp.lunar + ' '.repeat(pad)) +
' ' +
VLINE
} else {

View File

@ -236,7 +236,7 @@ export const EARTHLY_BRANCHES = [
'亥'
]
// 24节气表和C值
// 24节气表
export const SOLAR_TERMS = [
'小寒',
'大寒',
@ -264,6 +264,210 @@ export const SOLAR_TERMS = [
'冬至'
]
export const SOLAR_TERMS_YEARS = [
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190621062106220722082408240824092408230823',
'062105200722062107220722082409240924092408230823',
'072105200621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190621062106220622082408240824092408230823',
'062105200722062107220722082409240924092408230823',
'072105200621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190621062106220622082408240824092408230823',
'062105200722062107220722082409240924092408230823',
'072105200621052006210622072308230823092408220722',
'062004190621052106220622082308240823092408230822',
'062104190621052106220622082408240824092408230823',
'062105200622062106220722082408240924092408230823',
'062105200621052006210622072308230823082408220722',
'062004190621052106210622082308240823092408230822',
'062104190621052106220622082408240824092408230822',
'062105200622062106220722082408240924092408230823',
'062105200621052006210622072308230823082408220722',
'062004190621052006210622082308240823092408230722',
'062104190621052106220622082408240824092408230822',
'062105190621062106220722082408240924092408230823',
'062105200621052006210622072308230823082408220722',
'062004190621052006210622082308240823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190621062106220722082408240924092408230823',
'062105200621052006210622072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190621062106220722082408240824092408230823',
'062105200621052006210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190621062106220622082408240824092408230823',
'062105200621052006210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190621062106220622082408240824092408230823',
'062105200621052006210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190621062106220622082408240824092408230823',
'062105200621052005210621072308230823082307220722',
'062004190621052006210622072308230823082408220722',
'062004190621052106220622082308240823092408230822',
'062104190621052106220622082408240824092408230823',
'062105200521052005210621072307230823082307220722',
'052004190621052006210622072308230823082408220722',
'062004190621052006210622082308240823092408230822',
'062104190621052106220622082408240824092408230823',
'062105200521052005210621072307230823082307220722',
'052004190621052006210622072308230823082408220722',
'062004190621052006210622082308240823092408230722',
'062104190621052106220622082308240824092408230822',
'062105200520052005210621072307230823082307220722',
'052004190621052006210622072308230823082408220722',
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190520052005210621072307230723082307220722',
'052004190621052006210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190520052005210621072307230723082307220722',
'052004190621052006210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190520052005210521072307230723082307220722',
'052004190621052006210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240824092408230822',
'062105190520052005210521072307230723082307220722',
'052004190621052005210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190621052106220622082308240823092408230822',
'062105190520042005210521072307230723082307220722',
'052004190621052005210621072307230823082307220722',
'062004190621052006210622072308230823082408230722',
'062004190621052106210622082308240823092408230822',
'062105190520042005210521072307230723082307220722',
'052004190621052005210621072307230823082307220722',
'062004190621052006210622072308230823082408220722',
'062004190621052006210622082308240823092408230822',
'062104190520042005210521072207230723082307220722',
'052004190521052005210621072307230823082307220722',
'052004190621052006210622072308230823082408220722',
'062004190621052006210622072308240823092408230722',
'062104190520042005210521072207230723082307220721',
'052004190520052005210621072307230723082307220722',
'052004190621052006210621072308230823082408220722',
'062004190621052006210622072308230823092408230722',
'062104190520042005210521072207230723082307220721',
'052004180520052005210621072307230723082307220722',
'052004190621052006210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722',
'052004190621052006210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722',
'052004190621052006210621072308230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722',
'052004190621052005210621072307230823082307220722',
'062004190621052006210622072308230823092408230722',
'062104190520042005210521072207230722082307220721',
'052004180520042005210521072307230723082307220722',
'052004190621052005210621072307230823082307220722',
'062004190621052006210622072308230823082408230722',
'062104190520042005200521072207230722082307220721',
'052004180520042005210521072207230723082307220722',
'052004190621052005210621072307230823082307220722',
'062004190621052006210622072308230823082408220722',
'062004190520041905200521072207230722082307220721',
'052003180520042005210521072207230723082307220722',
'052004190521052005210621072307230823082307220722',
'052004190621052006210621072308230823082408220722',
'062004190520041905200521062207220722082307220721',
'052003180520042005210521072207230723082307220721',
'052004190520052005210621072307230723082307220722',
'052004190621052006210621072308230823082408220722',
'062004190520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722',
'052004190621052006210621072308230823082307220722',
'062004190520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722',
'052004190621052006210621072308230823082307220722',
'062004190520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722',
'052004190621052005210621072307230823082307220722',
'062004190520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722',
'052004190621052005210621072307230823082307220722',
'062004190520041905200521062207220722082307220621',
'052003180520042005200521072207230722082307220721',
'052004180520042005210521072307230723082307220722',
'052004190621052005210621072307230823082307220722',
'062004190520041905200521062207220722072307220621',
'052003180520041905200521072207230722082307220721',
'052004180520042005210521072207230723082307220722',
'052004190621052005210621072307230823082307220722',
'062004190520041905200520062207220722072307210621',
'051903180520041905200521062207220722082307220721',
'052003180520042005210521072207230723082307220722',
'052004190520052005210621072307230723082307220722',
'052004190520041905200520062207220722072307210621',
'051903180520041905200521062207220722082307220721',
'052003180520042005210521072207230723082307220722',
'052004190520052005210521072307230723082307220722',
'052004190520041905200520062207220722072307210621',
'051903180520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004190520052005210521072307230723082307220722',
'052004190520041905200520062207220722072206210621',
'051903180520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722',
'052004190520041905200520062207220722072206210621',
'051903180520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722',
'052004190520041904200520062206220722072206210621',
'051903180520041905200521062207220722082307220621',
'052003180520042005200521072207230722082307220721',
'052004180520052005210521072307230723082307220722',
'052004190520041904200520062206220722072206210621',
'051903180520041905200521062207220722072307220621',
'052003180520042005200521072207230722082307220721',
'052004180520042005210521072207230723082307220722',
'052004190520041904200520062206220722072206210621',
'051903180520041905200521062207220722072307220621',
'052003180520041905200521062207230722082307220721',
'052004180520042005210521072207230723082307220722',
'052004190520041904200520062206220722072206210621',
'051903180520041905200520062207220722072307210621',
'052003180520041905200521062207220722082307220721',
'052003180520042005210521072207230723082307220722',
'052004190419041904200520062206220622072206210621',
'041903180520041905200520062207220722072307210621',
'051903180520041905200521062207220722082307220721',
'052003180520042005210521072207230723082307220722',
'052004190419041904200420062206220622072206210621',
'041903180520041905200520062207220722072307210621',
'051903180520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004190419041904200420062206220622072206210621',
'041903180520041905200520062207220722072206210621',
'051903180520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004180419041904200420062206220622072206210621',
'041903180520041905200520062206220722072206210621',
'051903180520041905200521062207220722082307220621',
'052003180520042005210521072207230723082307220721',
'052004180520052005210521072307230723082307220722'
]
// 农历节日(仅为常规节日, 地方节日、教派节日未收录)
export const FESTIVALS = {
'1.1': '春节',

View File

@ -12,7 +12,9 @@ import {
EARTHLY_BRANCHES,
ZODIAC,
FESTIVALS,
SOLAR_FESTIVALS
SOLAR_FESTIVALS,
SOLAR_TERMS,
SOLAR_TERMS_YEARS
} from './config.js'
/**
@ -24,7 +26,8 @@ export function solar2lunar(year = 1901, month = 0, day = 1) {
var timestamp = Date.UTC(year, month, day) // 传入日期的时间戳
var offset = (timestamp - baseDate) / (24 * 60 * 60 * 1000) + 1 // 计算与的相差天数, 有1天的修正
var months, leap
var result = { short: '' }
var result = { short: '', solarTerms: '', festival: '', lunarFestival: '' }
var solarTermsYear = SOLAR_TERMS_YEARS[year - 1900]
if (year < 1901 || year > 2100) {
return result
@ -63,16 +66,28 @@ export function solar2lunar(year = 1901, month = 0, day = 1) {
}
}
// 二十四节气
if (solarTermsYear) {
let tmp = solarTermsYear.slice(month * 4, (month + 1) * 4)
if (+tmp.slice(0, 2) === day) {
result.solarTerms = SOLAR_TERMS[month * 2]
} else if (+tmp.slice(2) === day) {
result.solarTerms = SOLAR_TERMS[month * 2 + 1]
}
}
// 公历节日
result.festival = SOLAR_FESTIVALS[`${month + 1}.${day}`]
result.festival = SOLAR_FESTIVALS[`${month + 1}.${day}`] || ''
// 非闰月才有农历节日
if (!result.leap) {
// 修正没有年三十的除夕
if (result.month === 11 && result.day === months.pop()) {
result.festival = FESTIVALS['12.30']
result.lunarFestival = FESTIVALS['12.30']
} else {
result.festival = FESTIVALS[`${result.month + 1}.${result.day}`] || result.festival
result.lunarFestival = FESTIVALS[`${result.month + 1}.${result.day}`] || ''
}
}
@ -90,9 +105,12 @@ export function solar2lunar(year = 1901, month = 0, day = 1) {
} else if (result.day === 30) {
result.dayCN = LUNAR_DAY[3] + LUNAR_DAY[10]
}
// console.log(result)
result.short = result.festival
? result.festival
: result.solarTerms
? result.solarTerms
: result.day === 1
? result.monthCN
: result.dayCN