欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue實(shí)現(xiàn)垂直無限滑動日歷組件

 更新時間:2022年04月15日 16:34:37   作者:LvyYoung  
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)垂直無限滑動日歷組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

用vue做了一個垂直無限滑動日歷,在這里記錄一下實(shí)現(xiàn)。

效果

組件

verticalCalendar.vue

<template>
? <div ref="container" class="calendar-vt">
? ? <div class="top-month">{{ currentMonth }}月</div>
? ? <ul ref="scroll" class="scroll" @scroll="fnScroll">
? ? ? <template v-for="(item, index) in dateList">
? ? ? ? <li v-if="item.type === 'month'" :key="index" class="li-month">
? ? ? ? ? {{ item.num }}月
? ? ? ? </li>
? ? ? ? <li
? ? ? ? ? v-else
? ? ? ? ? :key="index"
? ? ? ? ? class="li-day"
? ? ? ? ? :class="liDayClass(item.date)"
? ? ? ? ? @click="selectDate(item.date)"
? ? ? ? >
? ? ? ? ? <span class="date">{{ item.num }}</span>
? ? ? ? ? <span class="lunar">{{ item.date | getLunarDate }}</span>
? ? ? ? </li>
? ? ? </template>
? ? </ul>
? </div>
</template>
<script>
import calendar from "@/utils/calendar";
import { throttle } from "throttle-debounce";
import { formatDate } from "@/utils/moment.js";
export default {
? name: "vertical-calendar",
? props: {
? ? currentDate: {
? ? ? type: Date,
? ? ? default: () => new Date(),
? ? },
? },
? data() {
? ? return {
? ? ? dateList: [], // 日歷列表
? ? ? cellCount: 0, // 日歷個數(shù)
? ? ? fnScroll: () => {},
? ? ? currentMonth: 0,
? ? ? value: new Date(), // 當(dāng)前日歷顯示的中間日期
? ? };
? },
? computed: {
? ? liDayClass() {
? ? ? return (date) => {
? ? ? ? if (
? ? ? ? ? formatDate(this.currentDate, "YYYY-MM-DD") ==
? ? ? ? ? formatDate(date, "YYYY-MM-DD")
? ? ? ? ) {
? ? ? ? ? return ["li-day", "isToday"];
? ? ? ? } else {
? ? ? ? ? return "li-day";
? ? ? ? }
? ? ? };
? ? },
? },

? filters: {
? ? // 農(nóng)歷
? ? getLunarDate(date) {
? ? ? let year = date.getFullYear();
? ? ? let month = date.getMonth() + 1;
? ? ? let day = date.getDate();
? ? ? let lunarCalendar = calendar.solar2lunar(year, month, day);
? ? ? if (lunarCalendar.festival) return lunarCalendar.festival;
? ? ? if (lunarCalendar.lunarFestival) return lunarCalendar.lunarFestival;
? ? ? return lunarCalendar.IDayCn;
? ? },
? },
? created() {
? ? this.fnScroll = throttle(500, this.handleScroll);
? },
? mounted() {
? ? this.value = this.currentDate;
? ? this.$nextTick(() => {
? ? ? let height = this.$refs.container.offsetHeight;
? ? ? this.cellCount = Math.floor(height / 50);
? ? ? // 獲取當(dāng)年日歷,從上一年的12-31至下一年1-1,防止?jié)L動不到最頂或最底
? ? ? this.dateList = calendar.getFullYearDate(
? ? ? ? this.currentDate,
? ? ? ? this.cellCount
? ? ? );
? ? ? // 計(jì)算當(dāng)前日期的位置
? ? ? let index = this.dateList.findIndex((item) => {
? ? ? ? if (item.type === "day") {
? ? ? ? ? return (
? ? ? ? ? ? formatDate(this.currentDate, "YYYY-MM-DD") ==
? ? ? ? ? ? formatDate(item.date, "YYYY-MM-DD")
? ? ? ? ? );
? ? ? ? } else return false;
? ? ? });
? ? ? setTimeout(() => {
? ? ? ? // 滾動到當(dāng)前日期位置
? ? ? ? this.$refs.scroll.scrollTop = (index - this.cellCount / 2) * 50;
? ? ? ? this.currentMonth = this.dateList[index].date.getMonth() + 1;
? ? ? });
? ? });
? },
? methods: {
? ? handleScroll(e) {
? ? ? // 日歷觸頂,計(jì)算上一年日歷
? ? ? if (e.target.scrollTop === 0) {
? ? ? ? this.value = new Date(this.value.getFullYear() - 1 + "/12/31");
? ? ? ? this.dateList = calendar.getFullYearDate(this.value, this.cellCount);
? ? ? ? this.$nextTick(() => {
? ? ? ? ? // 滾動到上一年最底部
? ? ? ? ? e.target.scrollTop = 365 * 50;
? ? ? ? ? this.currentMonth = 12;
? ? ? ? });
? ? ? } else if (
? ? ? ? Math.ceil(e.target.scrollTop) ==
? ? ? ? e.target.scrollHeight - e.target.clientHeight
? ? ? ) {
? ? ? ? // 日歷觸底,計(jì)算下一年日歷
? ? ? ? this.value = new Date(this.value.getFullYear() + 1 + "/1/1");
? ? ? ? this.dateList = calendar.getFullYearDate(this.value, this.cellCount);
? ? ? ? this.$nextTick(() => {
? ? ? ? ? // 滾動到下一年最頂部
? ? ? ? ? e.target.scrollTop = 5;
? ? ? ? ? this.currentMonth = 1;
? ? ? ? });
? ? ? } else {
? ? ? ? // 更新當(dāng)前顯示第一個日期所屬月份
? ? ? ? let index = Math.ceil(e.target.scrollTop / 50);
? ? ? ? if (this.dateList[index].type === "month") index++;
? ? ? ? this.currentMonth = this.dateList[index].date.getMonth() + 1;
? ? ? }
? ? },
? ? selectDate(date) {
? ? ? this.$emit("on-select", date);
? ? },
? },
};
</script>
<style lang="scss" scoped>
.calendar-vt {
? width: 60px;
? height: 100%;
? position: relative;
? .top-month {
? ? height: 50px;
? ? display: flex;
? ? justify-content: center;
? ? align-items: center;
? ? flex-direction: column;
? ? border: 1px solid #ccc;
? ? cursor: pointer;
? ? background-color: #0474c7;
? ? color: #fff;
? ? font-size: 18px;
? }
? .scroll {
? ? height: calc(100% - 50px);
? ? overflow-y: auto;
? ? scrollbar-width: none; /* Firefox */
? ? -ms-overflow-style: none; /* IE 10+ */
? ? &::-webkit-scrollbar {
? ? ? display: none;
? ? }
? ? .li-month,
? ? .li-day {
? ? ? height: 50px;
? ? ? display: flex;
? ? ? justify-content: center;
? ? ? align-items: center;
? ? ? flex-direction: column;
? ? ? border: 1px solid #ccc;
? ? ? cursor: pointer;
? ? }
? ? .li-month {
? ? ? background-color: #0474c7;
? ? ? color: #fff;
? ? ? font-size: 18px;
? ? }
? ? .li-day {
? ? ? .date {
? ? ? ? font-size: 14px;
? ? ? }
? ? ? .lunar {
? ? ? ? font-size: 10px;
? ? ? ? color: #999;
? ? ? }
? ? }
? ? .isToday {
? ? ? background-color: #50a3e6;
? ? ? .date,
? ? ? .lunar {
? ? ? ? color: #fff;
? ? ? }
? ? }
? }
}
</style>

工具類

calendar.js

/**
* @1900-2100區(qū)間內(nèi)的公歷、農(nóng)歷互轉(zhuǎn)
* @charset UTF-8
* @Author ?Jea楊(JJonline@JJonline.Cn)
* @Time ? ?2014-7-21
* @Time ? ?2016-8-13 Fixed 2033hex、Attribution Annals
* @Time ? ?2016-9-25 Fixed lunar LeapMonth Param Bug
* @Time ? ?2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
* @Version 1.0.3
* @公歷轉(zhuǎn)農(nóng)歷:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
* @農(nóng)歷轉(zhuǎn)公歷:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
*/
const calendar = {

? /**
? ? * 農(nóng)歷1900-2100的潤大小信息表
? ? * @Array Of Property
? ? * @return Hex
? ? */
? lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,//1900-1909
? ? 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977,//1910-1919
? ? 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,//1920-1929
? ? 0x06566, 0x0d4a0, 0x0ea50, 0x16a95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,//1930-1939
? ? 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557,//1940-1949
? ? 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0,//1950-1959
? ? 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0,//1960-1969
? ? 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6,//1970-1979
? ? 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570,//1980-1989
? ? 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0,//1990-1999
? ? 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5,//2000-2009
? ? 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930,//2010-2019
? ? 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530,//2020-2029
? ? 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45,//2030-2039
? ? 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0,//2040-2049
? ? /**Add By JJonline@JJonline.Cn**/
? ? 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0,//2050-2059
? ? 0x092e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4,//2060-2069
? ? 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0,//2070-2079
? ? 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160,//2080-2089
? ? 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252,//2090-2099
? ? 0x0d520],//2100

? /**
? ? * 公歷每個月份的天數(shù)普通表
? ? * @Array Of Property
? ? * @return Number
? ? */
? solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],

? /**
? ? * 天干地支之天干速查表
? ? * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
? ? * @return Cn string
? ? */
? Gan: ["\u7532", "\u4e59", "\u4e19", "\u4e01", "\u620a", "\u5df1", "\u5e9a", "\u8f9b", "\u58ec", "\u7678"],

? /**
? ? * 天干地支之地支速查表
? ? * @Array Of Property
? ? * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
? ? * @return Cn string
? ? */
? Zhi: ["\u5b50", "\u4e11", "\u5bc5", "\u536f", "\u8fb0", "\u5df3", "\u5348", "\u672a", "\u7533", "\u9149", "\u620c", "\u4ea5"],

? /**
? ? * 天干地支之地支速查表<=>生肖
? ? * @Array Of Property
? ? * @trans["鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬"]
? ? * @return Cn string
? ? */
? Animals: ["\u9f20", "\u725b", "\u864e", "\u5154", "\u9f99", "\u86c7", "\u9a6c", "\u7f8a", "\u7334", "\u9e21", "\u72d7", "\u732a"],

? /**
? ?* 陽歷節(jié)日
? ?*/
? festival: {
? ? '1-1': { title: '元旦' },
? ? '5-1': { title: '勞動節(jié)' },
? ? '5-4': { title: '青年節(jié)' },
? ? '6-1': { title: '兒童節(jié)' },
? ? '9-10': { title: '教師節(jié)' },
? ? '10-1': { title: '國慶節(jié)' },
? ? '12-25': { title: '圣誕節(jié)' },
? },

? /**
? ?* 農(nóng)歷節(jié)日
? ?*/
? lfestival: {
? ? '12-30': { title: '除夕' },
? ? '1-1': { title: '春節(jié)' },
? ? '1-15': { title: '元宵節(jié)' },
? ? '5-5': { title: '端午節(jié)' },
? ? '8-15': { title: '中秋節(jié)' },
? },

? /**
? ?* 返回默認(rèn)定義的陽歷節(jié)日
? ?*/
? getFestival() {
? ? return this.festival
? },

? /**
? ?* 返回默認(rèn)定義的內(nèi)容里節(jié)日
? ?*/
? getLunarFestival() {
? ? return this.lfestival
? },

? /**
? ?*
? ?* @param {Object} 按照festival的格式輸入數(shù)據(jù),設(shè)置陽歷節(jié)日
? ?*/
? setFestival(param = {}) {
? ? this.festival = param
? },

? /**
? ?*
? ?* @param {Object} 按照lfestival的格式輸入數(shù)據(jù),設(shè)置農(nóng)歷節(jié)日
? ?*/
? setLunarFestival(param = {}) {
? ? this.lfestival = param
? },

? /**
? ? * 24節(jié)氣速查表
? ? * @Array Of Property
? ? * @trans["小寒","大寒","立春","雨水","驚蟄","春分","清明","谷雨","立夏","小滿","芒種","夏至","小暑","大暑","立秋","處暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
? ? * @return Cn string
? ? */
? solarTerm: ["\u5c0f\u5bd2", "\u5927\u5bd2", "\u7acb\u6625", "\u96e8\u6c34", "\u60ca\u86f0", "\u6625\u5206", "\u6e05\u660e", "\u8c37\u96e8", "\u7acb\u590f", "\u5c0f\u6ee1", "\u8292\u79cd", "\u590f\u81f3", "\u5c0f\u6691", "\u5927\u6691", "\u7acb\u79cb", "\u5904\u6691", "\u767d\u9732", "\u79cb\u5206", "\u5bd2\u9732", "\u971c\u964d", "\u7acb\u51ac", "\u5c0f\u96ea", "\u5927\u96ea", "\u51ac\u81f3"],

? /**
? ? * 1900-2100各年的24節(jié)氣日期速查表
? ? * @Array Of Property
? ? * @return 0x string For splice
? ? */
? sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
? ? '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
? ? '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
? ? '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
? ? 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
? ? '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
? ? '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
? ? '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
? ? '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
? ? '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
? ? '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
? ? '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
? ? '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
? ? '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
? ? '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
? ? '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
? ? '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
? ? '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
? ? '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
? ? '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
? ? '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
? ? '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
? ? '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
? ? '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
? ? '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
? ? '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
? ? '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
? ? '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
? ? '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
? ? '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
? ? '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
? ? '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
? ? '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
? ? '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
? ? '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
? ? '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
? ? '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
? ? '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
? ? '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
? ? '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
? ? '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
? ? '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
? ? '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
? ? '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
? ? '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
? ? '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
? ? '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
? ? '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
? ? '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
? ? '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
? ? '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
? ? '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
? ? '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
? ? '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
? ? '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
? ? '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
? ? '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
? ? '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
? ? '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
? ? '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
? ? '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
? ? '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
? ? '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
? ? '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
? ? '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
? ? '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
? ? '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],

? /**
? ? * 數(shù)字轉(zhuǎn)中文速查表
? ? * @Array Of Property
? ? * @trans ['日','一','二','三','四','五','六','七','八','九','十']
? ? * @return Cn string
? ? */
? nStr1: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341"],

? /**
? ? * 日期轉(zhuǎn)農(nóng)歷稱呼速查表
? ? * @Array Of Property
? ? * @trans ['初','十','廿','卅']
? ? * @return Cn string
? ? */
? nStr2: ["\u521d", "\u5341", "\u5eff", "\u5345"],

? /**
? ? * 月份轉(zhuǎn)農(nóng)歷稱呼速查表
? ? * @Array Of Property
? ? * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','臘']
? ? * @return Cn string
? ? */
? nStr3: ["\u6b63", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u51ac", "\u814a"],

? /**
? ? * 返回農(nóng)歷y年一整年的總天數(shù)
? ? * @param lunar Year
? ? * @return Number
? ? * @eg:var count = calendar.lYearDays(1987) ;//count=387
? ? */
? lYearDays: function (y) {
? ? var i, sum = 348;
? ? for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0; }
? ? return (sum + this.leapDays(y));
? },

? /**
? ? * 返回農(nóng)歷y年閏月是哪個月;若y年沒有閏月 則返回0
? ? * @param lunar Year
? ? * @return Number (0-12)
? ? * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
? ? */
? leapMonth: function (y) { //閏字編碼 \u95f0
? ? return (this.lunarInfo[y - 1900] & 0xf);
? },

? /**
? ? * 返回農(nóng)歷y年閏月的天數(shù) 若該年沒有閏月則返回0
? ? * @param lunar Year
? ? * @return Number (0、29、30)
? ? * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
? ? */
? leapDays: function (y) {
? ? if (this.leapMonth(y)) {
? ? ? return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29);
? ? }
? ? return (0);
? },

? /**
? ? * 返回農(nóng)歷y年m月(非閏月)的總天數(shù),計(jì)算m為閏月時的天數(shù)請使用leapDays方法
? ? * @param lunar Year
? ? * @return Number (-1、29、30)
? ? * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
? ? */
? monthDays: function (y, m) {
? ? if (m > 12 || m < 1) { return -1 }//月份參數(shù)從1至12,參數(shù)錯誤返回-1
? ? return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29);
? },

? /**
? ? * 返回公歷(!)y年m月的天數(shù)
? ? * @param solar Year
? ? * @return Number (-1、28、29、30、31)
? ? * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
? ? */
? solarDays: function (y, m) {
? ? if (m > 12 || m < 1) { return -1 } //若參數(shù)錯誤 返回-1
? ? var ms = m - 1;
? ? if (ms == 1) { //2月份的閏平規(guī)律測算后確認(rèn)返回28或29
? ? ? return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28);
? ? } else {
? ? ? return (this.solarMonth[ms]);
? ? }
? },

? /**
? ?* 農(nóng)歷年份轉(zhuǎn)換為干支紀(jì)年
? ?* @param ?lYear 農(nóng)歷年的年份數(shù)
? ?* @return Cn string
? ?*/
? toGanZhiYear: function (lYear) {
? ? var ganKey = (lYear - 3) % 10;
? ? var zhiKey = (lYear - 3) % 12;
? ? if (ganKey == 0) ganKey = 10;//如果余數(shù)為0則為最后一個天干
? ? if (zhiKey == 0) zhiKey = 12;//如果余數(shù)為0則為最后一個地支
? ? return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1];

? },

? /**
? ?* 公歷月、日判斷所屬星座
? ?* @param ?cMonth [description]
? ?* @param ?cDay [description]
? ?* @return Cn string
? ?*/
? toAstro: function (cMonth, cDay) {
? ? var s = "\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf";
? ? var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];
? ? return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + "\u5ea7";//座
? },

? /**
? ? * 傳入offset偏移量返回干支
? ? * @param offset 相對甲子的偏移量
? ? * @return Cn string
? ? */
? toGanZhi: function (offset) {
? ? return this.Gan[offset % 10] + this.Zhi[offset % 12];
? },

? /**
? ? * 傳入公歷(!)y年獲得該年第n個節(jié)氣的公歷日期
? ? * @param y公歷年(1900-2100);n二十四節(jié)氣中的第幾個節(jié)氣(1~24);從n=1(小寒)算起
? ? * @return day Number
? ? * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
? ? */
? getTerm: function (y, n) {
? ? if (y < 1900 || y > 2100) { return -1; }
? ? if (n < 1 || n > 24) { return -1; }
? ? var _table = this.sTermInfo[y - 1900];
? ? var _info = [
? ? ? parseInt('0x' + _table.substr(0, 5)).toString(),
? ? ? parseInt('0x' + _table.substr(5, 5)).toString(),
? ? ? parseInt('0x' + _table.substr(10, 5)).toString(),
? ? ? parseInt('0x' + _table.substr(15, 5)).toString(),
? ? ? parseInt('0x' + _table.substr(20, 5)).toString(),
? ? ? parseInt('0x' + _table.substr(25, 5)).toString()
? ? ];
? ? var _calday = [
? ? ? _info[0].substr(0, 1),
? ? ? _info[0].substr(1, 2),
? ? ? _info[0].substr(3, 1),
? ? ? _info[0].substr(4, 2),

? ? ? _info[1].substr(0, 1),
? ? ? _info[1].substr(1, 2),
? ? ? _info[1].substr(3, 1),
? ? ? _info[1].substr(4, 2),

? ? ? _info[2].substr(0, 1),
? ? ? _info[2].substr(1, 2),
? ? ? _info[2].substr(3, 1),
? ? ? _info[2].substr(4, 2),

? ? ? _info[3].substr(0, 1),
? ? ? _info[3].substr(1, 2),
? ? ? _info[3].substr(3, 1),
? ? ? _info[3].substr(4, 2),

? ? ? _info[4].substr(0, 1),
? ? ? _info[4].substr(1, 2),
? ? ? _info[4].substr(3, 1),
? ? ? _info[4].substr(4, 2),

? ? ? _info[5].substr(0, 1),
? ? ? _info[5].substr(1, 2),
? ? ? _info[5].substr(3, 1),
? ? ? _info[5].substr(4, 2),
? ? ];
? ? return parseInt(_calday[n - 1]);
? },

? /**
? ? * 傳入農(nóng)歷數(shù)字月份返回漢語通俗表示法
? ? * @param lunar month
? ? * @return Cn string
? ? * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='臘月'
? ? */
? toChinaMonth: function (m) { // 月 => \u6708
? ? if (m > 12 || m < 1) { return -1 } //若參數(shù)錯誤 返回-1
? ? var s = this.nStr3[m - 1];
? ? s += "\u6708";//加上月字
? ? return s;
? },

? /**
? ? * 傳入農(nóng)歷日期數(shù)字返回漢字表示法
? ? * @param lunar day
? ? * @return Cn string
? ? * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
? ? */
? toChinaDay: function (d) { //日 => \u65e5
? ? var s;
? ? switch (d) {
? ? ? case 10:
? ? ? ? s = '\u521d\u5341'; break;
? ? ? case 20:
? ? ? ? s = '\u4e8c\u5341'; break;
? ? ? ? break;
? ? ? case 30:
? ? ? ? s = '\u4e09\u5341'; break;
? ? ? ? break;
? ? ? default:
? ? ? ? s = this.nStr2[Math.floor(d / 10)];
? ? ? ? s += this.nStr1[d % 10];
? ? }
? ? return (s);
? },

? /**
? ? * 年份轉(zhuǎn)生肖[!僅能大致轉(zhuǎn)換] => 精確劃分生肖分界線是“立春”
? ? * @param y year
? ? * @return Cn string
? ? * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
? ? */
? getAnimal: function (y) {
? ? return this.Animals[(y - 4) % 12]
? },

? /**
? ? ?* @param {String} date?
? ? ?* @returns {Boolean}?
? ? ?*/
? isSolarPublicHoliday: function (date) {
? ? // 陽歷:元旦、勞動節(jié)、國慶
? ? let solarArr = ["1-1", "1-2", "1-3", "5-1", "10-1", "10-2", "10-3"];
? ? return solarArr.indexOf(date) != -1;
? },
? isLunarPublicHoliday: function (date) {
? ? // 陰歷:春節(jié)、清明、端午節(jié)、中秋節(jié)
? ? let lunarArr = ["1-1", "1-2", "1-3", "2-23", "5-5", "8-15"];
? ? return lunarArr.indexOf(date) != -1;
? },
? isFestival(slotDate, slotData) {
? ? // slotDate是標(biāo)準(zhǔn)時間
? ? // slotData是對象
? ? let solarDayArr = slotData.day.split("-");
? ? let lunarDay = calendar.solar2lunar(
? ? ? solarDayArr[0],
? ? ? solarDayArr[1],
? ? ? solarDayArr[2]
? ? );

? ? // 公歷節(jié)日\農(nóng)歷節(jié)日\農(nóng)歷節(jié)氣
? ? let festAndTerm = [];
? ? festAndTerm.push(
? ? ? lunarDay.festival == null ? "" : " " + lunarDay.festival
? ? );
? ? festAndTerm.push(
? ? ? lunarDay.lunarFestival == null ? "" : "" + lunarDay.lunarFestival
? ? );
? ? festAndTerm.push(lunarDay.Term == null ? "" : "" + lunarDay.Term);
? ? festAndTerm = festAndTerm.join("");
? ? // 原本的方法,return出的是一個Boolean
? ? // 更改過后返回Object:公立日期、農(nóng)歷日期
? ? return {
? ? ? solarDate: lunarDay.date,
? ? ? lunarDate: lunarDay.lunarDate
? ? };
? },

? /**
? ? * 傳入陽歷年月日獲得詳細(xì)的公歷、農(nóng)歷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: function (y, m, d) { //參數(shù)區(qū)間1900.1.31~2100.12.31
? ? y = parseInt(y)
? ? m = parseInt(m)
? ? d = parseInt(d)
? ? //年份限定、上限
? ? if (y < 1900 || y > 2100) {
? ? ? return -1;// undefined轉(zhuǎn)換為數(shù)字變?yōu)镹aN
? ? }
? ? //公歷傳參最下限
? ? if (y == 1900 && m == 1 && d < 31) {
? ? ? return -1;
? ? }
? ? //未傳參 ?獲得當(dāng)天
? ? if (!y) {
? ? ? var objDate = new Date();
? ? } else {
? ? ? var objDate = new Date(y, parseInt(m) - 1, d)
? ? }
? ? var i, leap = 0, temp = 0;
? ? //修正ymd參數(shù)
? ? var y = objDate.getFullYear(),
? ? ? m = objDate.getMonth() + 1,
? ? ? d = objDate.getDate();
? ? var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000;
? ? for (i = 1900; i < 2101 && offset > 0; i++) {
? ? ? temp = this.lYearDays(i);
? ? ? offset -= temp;
? ? }
? ? if (offset < 0) {
? ? ? offset += temp; i--;
? ? }

? ? //是否今天
? ? var isTodayObj = new Date(),
? ? ? isToday = false;
? ? if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
? ? ? isToday = true;
? ? }
? ? //星期幾
? ? var nWeek = objDate.getDay(),
? ? ? cWeek = this.nStr1[nWeek];
? ? //數(shù)字表示周幾順應(yīng)天朝周一開始的慣例
? ? if (nWeek == 0) {
? ? ? nWeek = 7;
? ? }
? ? //農(nóng)歷年
? ? var year = i;
? ? var leap = this.leapMonth(i); //閏哪個月
? ? var isLeap = false;

? ? //效驗(yàn)閏月
? ? for (i = 1; i < 13 && offset > 0; i++) {
? ? ? //閏月
? ? ? if (leap > 0 && i == (leap + 1) && isLeap == false) {
? ? ? ? --i;
? ? ? ? isLeap = true; temp = this.leapDays(year); //計(jì)算農(nóng)歷閏月天數(shù)
? ? ? }
? ? ? else {
? ? ? ? temp = this.monthDays(year, i);//計(jì)算農(nóng)歷普通月天數(shù)
? ? ? }
? ? ? //解除閏月
? ? ? if (isLeap == true && i == (leap + 1)) { isLeap = false; }
? ? ? offset -= temp;
? ? }
? ? // 閏月導(dǎo)致數(shù)組下標(biāo)重疊取反
? ? if (offset == 0 && leap > 0 && i == leap + 1) {
? ? ? if (isLeap) {
? ? ? ? isLeap = false;
? ? ? } else {
? ? ? ? isLeap = true; --i;
? ? ? }
? ? }
? ? if (offset < 0) {
? ? ? offset += temp; --i;
? ? }
? ? //農(nóng)歷月
? ? var month = i;
? ? //農(nóng)歷日
? ? var day = offset + 1;
? ? //天干地支處理
? ? var sm = m - 1;
? ? var gzY = this.toGanZhiYear(year);

? ? // 當(dāng)月的兩個節(jié)氣
? ? // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
? ? var firstNode = this.getTerm(y, (m * 2 - 1));//返回當(dāng)月「節(jié)」為幾日開始
? ? var secondNode = this.getTerm(y, (m * 2));//返回當(dāng)月「節(jié)」為幾日開始

? ? // 依據(jù)12節(jié)氣修正干支月
? ? var gzM = this.toGanZhi((y - 1900) * 12 + m + 11);
? ? if (d >= firstNode) {
? ? ? gzM = this.toGanZhi((y - 1900) * 12 + m + 12);
? ? }

? ? //傳入的日期的節(jié)氣與否
? ? var isTerm = false;
? ? var Term = null;
? ? if (firstNode == d) {
? ? ? isTerm = true;
? ? ? Term = this.solarTerm[m * 2 - 2];
? ? }
? ? if (secondNode == d) {
? ? ? isTerm = true;
? ? ? Term = this.solarTerm[m * 2 - 1];
? ? }
? ? //日柱 當(dāng)月一日與 1900/1/1 相差天數(shù)
? ? var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;
? ? var gzD = this.toGanZhi(dayCyclical + d - 1);
? ? //該日期所屬的星座
? ? var astro = this.toAstro(m, d);

? ? var solarDate = y + '-' + m + '-' + d
? ? var lunarDate = year + '-' + month + '-' + day

? ? var festival = this.festival
? ? var lfestival = this.lfestival

? ? var festivalDate = m + '-' + d
? ? var lunarFestivalDate = month + '-' + day
? ? var monthDay = this.monthDays(year, month);
? ? return {
? ? ? date: solarDate,
? ? ? lunarDate: lunarDate,
? ? ? festival: festival[festivalDate] ? festival[festivalDate].title : null,
? ? ? lunarFestival: lunarFestivalDate == '12-29' && monthDay == 29 ? lfestival['12-30'].title : (lfestival[lunarFestivalDate] ? lfestival[lunarFestivalDate].title : null),
? ? ? 'lYear': year,
? ? ? 'lMonth': month,
? ? ? 'lDay': day,
? ? ? 'Animal': this.getAnimal(year),
? ? ? 'IMonthCn': (isLeap ? "\u95f0" : '') + this.toChinaMonth(month),
? ? ? 'IDayCn': this.toChinaDay(day),
? ? ? 'cYear': y,
? ? ? 'cMonth': m,
? ? ? 'cDay': d,
? ? ? 'gzYear': gzY,
? ? ? 'gzMonth': gzM,
? ? ? 'gzDay': gzD,
? ? ? 'isToday': isToday,
? ? ? 'isLeap': isLeap,
? ? ? 'nWeek': nWeek,
? ? ? 'ncWeek': "\u661f\u671f" + cWeek,
? ? ? 'isTerm': isTerm,
? ? ? 'Term': Term,
? ? ? 'astro': astro,
? ? ? 'isVacation': this.isVacation(solarDate)
? ? };
? },

? isVacation(date) {
? ? if (date === "2022-1-1") {
? ? ? return true
? ? }
? ? if (date === '2022-1-29' || date === '2022-1-30') {
? ? ? return false
? ? }
? ? return null
? },

? /**
? ? * 傳入農(nóng)歷年月日以及傳入的月份是否閏月獲得詳細(xì)的公歷、農(nóng)歷object信息 <=>JSON
? ? * @param y ?lunar year
? ? * @param m ?lunar month
? ? * @param d ?lunar day
? ? * @param isLeapMonth ?lunar month is leap or not.[如果是農(nóng)歷閏月第四個參數(shù)賦值true即可]
? ? * @return JSON object
? ? * @eg:console.log(calendar.lunar2solar(1987,9,10));
? ? */
? lunar2solar: function (y, m, d, isLeapMonth) { ? //參數(shù)區(qū)間1900.1.31~2100.12.1
? ? y = parseInt(y)
? ? m = parseInt(m)
? ? d = parseInt(d)
? ? var isLeapMonth = !!isLeapMonth;
? ? var leapOffset = 0;
? ? var leapMonth = this.leapMonth(y);
? ? var leapDay = this.leapDays(y);
? ? if (isLeapMonth && (leapMonth != m)) { return -1; }//傳參要求計(jì)算該閏月公歷 但該年得出的閏月與傳參的月份并不同
? ? if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1; }//超出了最大極限值
? ? var day = this.monthDays(y, m);
? ? var _day = day;
? ? //bugFix 2016-9-25
? ? //if month is leap, _day use leapDays method
? ? if (isLeapMonth) {
? ? ? _day = this.leapDays(y, m);
? ? }
? ? if (y < 1900 || y > 2100 || d > _day) { return -1; }//參數(shù)合法性效驗(yàn)

? ? //計(jì)算農(nóng)歷的時間差
? ? var offset = 0;
? ? for (var i = 1900; i < y; i++) {
? ? ? offset += this.lYearDays(i);
? ? }
? ? var leap = 0, isAdd = false;
? ? for (var i = 1; i < m; i++) {
? ? ? leap = this.leapMonth(y);
? ? ? if (!isAdd) {//處理閏月
? ? ? ? if (leap <= i && leap > 0) {
? ? ? ? ? offset += this.leapDays(y); isAdd = true;
? ? ? ? }
? ? ? }
? ? ? offset += this.monthDays(y, i);
? ? }
? ? //轉(zhuǎn)換閏月農(nóng)歷 需補(bǔ)充該年閏月的前一個月的時差
? ? if (isLeapMonth) { offset += day; }
? ? //1900年農(nóng)歷正月一日的公歷時間為1900年1月30日0時0分0秒(該時間也是本農(nóng)歷的最開始起始點(diǎn))
? ? var stmap = Date.UTC(1900, 1, 30, 0, 0, 0);
? ? var calObj = new Date((offset + d - 31) * 86400000 + stmap);
? ? var cY = calObj.getUTCFullYear();
? ? var cM = calObj.getUTCMonth() + 1;
? ? var cD = calObj.getUTCDate();

? ? return this.solar2lunar(cY, cM, cD);
? },
? /**
? ?* 計(jì)算全年日歷
? ?* @param {*} date?
? ?* @returns?
? ?*/
? getFullYearDate: function (date) {
? ? let dateArr = [];
? ? let firstDate = new Date(date.getFullYear() + '/1/1')
? ? for (let i = -1; i < 366; i++) {
? ? ? let dd = new Date(firstDate);
? ? ? dd.setDate(dd.getDate() + i);
? ? ? var y = dd.getFullYear();
? ? ? var m = dd.getMonth() + 1;
? ? ? var d = dd.getDate()
? ? ? if (d === 1) {
? ? ? ? dateArr.push({
? ? ? ? ? type: 'month',
? ? ? ? ? num: m
? ? ? ? })
? ? ? }
? ? ? dateArr.push({
? ? ? ? type: 'day',
? ? ? ? num: d,
? ? ? ? date: dd,
? ? ? })
? ? }
? ? return dateArr
? }
};
export default calendar;

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論