const method = {
toLunar(solarYear, solarMonth, solarDay) {
// 定义全局变量
var CalendarData = new Array(100)
var madd = new Array(12)
var numString = '一二三四五六七八九十'
var monString = '正二三四五六七八九十冬腊'
// eslint-disable-next-line no-unused-vars
var cYear, cMonth, cDay, TheDate
// eslint-disable-next-line no-array-constructor
CalendarData = new Array(
0xa4b,
0x5164b,
0x6a5,
0x6d4,
0x415b5,
0x2b6,
0x957,
0x2092f,
0x497,
0x60c96,
0xd4a,
0xea5,
0x50da9,
0x5ad,
0x2b6,
0x3126e,
0x92e,
0x7192d,
0xc95,
0xd4a,
0x61b4a,
0xb55,
0x56a,
0x4155b,
0x25d,
0x92d,
0x2192b,
0xa95,
0x71695,
0x6ca,
0xb55,
0x50ab5,
0x4da,
0xa5b,
0x30a57,
0x52b,
0x8152a,
0xe95,
0x6aa,
0x615aa,
0xab5,
0x4b6,
0x414ae,
0xa57,
0x526,
0x31d26,
0xd95,
0x70b55,
0x56a,
0x96d,
0x5095d,
0x4ad,
0xa4d,
0x41a4d,
0xd25,
0x81aa5,
0xb54,
0xb6a,
0x612da,
0x95b,
0x49b,
0x41497,
0xa4b,
0xa164b,
0x6a5,
0x6d4,
0x615b4,
0xab6,
0x957,
0x5092f,
0x497,
0x64b,
0x30d4a,
0xea5,
0x80d65,
0x5ac,
0xab6,
0x5126d,
0x92e,
0xc96,
0x41a95,
0xd4a,
0xda5,
0x20b55,
0x56a,
0x7155b,
0x25d,
0x92d,
0x5192b,
0xa95,
0xb4a,
0x416aa,
0xad5,
0x90ab5,
0x4ba,
0xa5b,
0x60a57,
0x52b,
0xa93,
0x40e95
)
madd[0] = 0
madd[1] = 31
madd[2] = 59
madd[3] = 90
madd[4] = 120
madd[5] = 151
madd[6] = 181
madd[7] = 212
madd[8] = 243
madd[9] = 273
madd[10] = 304
madd[11] = 334
function GetBit(m, n) {
return (m >> n) & 1
}
// 农历转换
function e2c() {
TheDate =
arguments.length != 3
? new Date()
: new Date(arguments[0], arguments[1], arguments[2])
var total, m, n, k
var isEnd = false
var tmp = TheDate.getYear()
if (tmp < 1900) {
tmp += 1900
}
total =
(tmp - 1921) * 365 +
Math.floor((tmp - 1921) / 4) +
madd[TheDate.getMonth()] +
TheDate.getDate() -
38
if (TheDate.getYear() % 4 == 0 && TheDate.getMonth() > 1) {
total++
}
for (m = 0; ; m++) {
k = CalendarData[m] < 0xfff ? 11 : 12
for (n = k; n >= 0; n--) {
if (total <= 29 + GetBit(CalendarData[m], n)) {
isEnd = true
break
}
total = total - 29 - GetBit(CalendarData[m], n)
}
if (isEnd) break
}
cYear = 1921 + m
cMonth = k - n + 1
cDay = total
if (k == 12) {
if (cMonth == Math.floor(CalendarData[m] / 0x10000) + 1) {
cMonth = 1 - cMonth
}
if (cMonth > Math.floor(CalendarData[m] / 0x10000) + 1) {
cMonth--
}
}
}
function GetcDateString() {
var tmp = ''
if (cDay == 1) {
if (cMonth < 1) {
// tmp += "(闰)";
tmp += monString.charAt(-cMonth - 1)
} else {
tmp += monString.charAt(cMonth - 1)
}
tmp += '月'
} else {
tmp += cDay < 11 ? '初' : cDay < 20 ? '十' : cDay < 30 ? '廿' : '三十'
if (cDay % 10 != 0 || cDay == 10) {
tmp += numString.charAt((cDay - 1) % 10)
}
}
return tmp
}
solarMonth = parseInt(solarMonth) > 0 ? solarMonth - 1 : 11
e2c(solarYear, solarMonth, solarDay)
return GetcDateString()
}
}
export default method
vue中通过时间转换农历得方法封装
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- JavaScript 1. type 类型判断 isString (o) {//是否字符串 returnObjec...
- 找到fullcalendar.js, 找到代码为 isRTL:false,这句话 输入以下几句 monthName...