IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 自写日历(周日历,农历节日节气) -> 正文阅读

[游戏开发]自写日历(周日历,农历节日节气)

详细的写了一个日历组件,把遇到的问题整理在这里


一开始打算用 antDesign 的日历组件稍作修改,但我要完成的日历组件需要周日历,现在 antD 没有这个功能,所以只好自己写一个

antd 的日历组件显示中文

import locale from 'antd/lib/calendar/locale/zh_CN.js'
<Calendar
   fullscreen={false}
   onPanelChange={this.onPanelChange}
   locale={locale}
/>

自写日历

在网上查找了很多人写的日历,最后参考了这位大佬的写法
https://blog.csdn.net/liuyuhua666
链接中有几个小地方代码打错了,都是这个方法里的,我还给改成了周日到周六的显示:

// 日期展示文本
	getDayText(line, weekIndex, weekDay, monthDays, mode) {
		let year = this.state.year;
		let month = this.state.month;
		//    				 日 一 二 三 四 五 六
		// getDay()对应的值: 0  1  2  3  4  5  6
		let _weekDay = weekDay;
		// 如果月份的第一天为周日,那么调整该值
		if (weekDay === 0) {
			_weekDay = 7;
		}

		let number;
		// 月模式
		if (mode === 'month') {
			number = line * 7 + weekIndex - _weekDay + 1;
			if (number <= 0 ) { // 上一个月
				// 如果是一月份, 那么上个月就是去年的12月份
				if (month === 0) {
					year = year - 1;
					month = 11;
				} else {
					month = month - 1;
				}
				// 获取上一个月的总天数
				let preMonthDays = CalenderUtil.getCurrentMonthDays(year, month);
				number = preMonthDays + number;
			} else if (number > monthDays) { // 下个月
				if (month === 11) {
					year = year + 1;
					month = 0;
				} else {
					month = month + 1;
				}
				number = number - monthDays;
			}
		} else { // 周模式
			const day = this.state.day;
			number = line * 7 + weekIndex - _weekDay + day;
			if (number > monthDays && number <= (day + 6)) {
				if (month === 11) {
					year = year + 1;
					month = 0;
				} else {
					month = month + 1;
				}
				number = number - monthDays;
			} else if (number < day || number > (day + 6)) {
				return '';
			}
		}
		return year + '-' + month + '-' + number;
	}

其他就是样式细节的调整,改完之后的效果图:
在这里插入图片描述
在这里插入图片描述

农历

使用 solarLunar 库

import solarLunar from 'solarLunar';

自定义方法(节气,节日):
ps: 注意除夕是春节的前一天而不是腊月三十,比如今年就没有腊月三十

// 农历日期对应节日转化
	getlunarDayCn = (year_, month_, day_) => {
		let lunar = solarLunar.solar2lunar(year_, month_ + 1, day_);
		// console.log(lunar);
		let JudgeLunar = solarLunar.solar2lunar(year_, month_ + 1, day_ + 1);
		let { isTerm, term, monthCn, dayCn, cMonth, cDay, ncWeek } = lunar
		let showDay = isTerm ? term : dayCn;
		if (showDay === '初一') {
			showDay = monthCn
		}
		// 判断是否有腊月三十
		if (JudgeLunar.monthCn === '正月' && JudgeLunar.dayCn === '初一') return '除夕';
		// 节日
		const lunarFestivalMap = {
			'正月_初一' : '春节',
			'正月_十五' : '元宵节',
			'五月_初五' : '端午节',
			'七月_初七' : '七夕节',
			'八月_十五' : '中秋节',
			'九月_初九' : '重阳节'
		}
		const solarFestivalMap = {
			'1.1' : '元旦',
			'3.8' : '妇女节',
			'5.1' : '劳动节',
			'5.4' : '青年节',
			'6.1' : '儿童节',
			'7.1' : '建党节',
			'8.1' : '建军节',
			'9.10': '教师节',
			'10.1': '国庆节',
			'12.25': '圣诞节'
		}
		const lunarFestival = lunarFestivalMap[`${monthCn}_${dayCn}`];
		const solarFestival = solarFestivalMap[`${cMonth}.${cDay}`];
		// 父亲节母亲节
		if(cMonth === 5 && cDay > 7 && cDay < 15 && ncWeek === '星期日') return '母亲节';
		if(cMonth === 6 && cDay > 14 && cDay < 22 && ncWeek === '星期日') return '父亲节';		
		return lunarFestival ? lunarFestival : solarFestival ? solarFestival : showDay;
	}

效果图:
在这里插入图片描述
在这里插入图片描述

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:46:08  更:2022-04-24 09:46:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:43:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码