当前位置: 首页 > news >正文

编一个自己的万年历

编一个自己的万年历

前阶段突然想查一下某一天是星期几,于是自己编了一个[小程序][https://blog.csdn.net/weixin_41905135/article/details/138972055?spm=1001.2014.3001.5501],但是功能很单一,就是单纯的查是星期几。(虽然用网络工具或者手机的日历软件也很容易),但是自己编一个是不是更方便呢?当然是了。今天是AI的时代,想编程序已经很容易了。今天我把之前那个程序彻底重新捋了一次,增加了一些符合自己要求的功能。

系统环境

操作系统:macOS sonoma

IDE开发环境:PyCharm 2024.1专业版

Python 3.12

功能如下

将任意公历日期转换成农历日期、全年第几周的星期几、农历的属相年等

源代码如下:

from lunardate import LunarDate
from datetime import datetime
# 定义一个阴历类
class Lunar:# 类属性number_dict = {'0': '零','1': '一','2': '二','3': '三','4': '四','5': '五','6': '六','7': '七','8': '八','9': '九','10': '十','11': '十一','12': '十二'}# 类属性属相年animal_years = {0: "猴",1: "鸡",2: "狗",3: "猪",4: "鼠",5: "牛",6: "虎",7: "兔",8: "龙",9: "蛇",10: "马",11: "羊"}# 定义初始化函数def __init__(self, year, month, day):self.year = yearself.month = monthself.day = dayself.date = datetime(year, month, day)self.date_str = self.date.strftime("%Y-%m-%d")self.lunar_date = Nonedef get_weekday(self):"""Convert date to weekday (Monday=0, Tuesday=1, ..., Sunday=6)"""# 确定是第几周return (self.date.isocalendar().week), (self.date.weekday() + 1) % 7def convert_to_lunar_date(self):self.lunar_date = LunarDate.fromSolarDate(self.year, self.month, self.day)return self.lunar_date# day转成汉字函数def num_convert_char(self):if self.lunar_date.day // 10 == 0:day_char = '初' + self.number_dict[str(self.lunar_date.day % 10)]elif self.lunar_date.day == 10:day_char = '初十'elif self.lunar_date.day // 10 == 1 and self.lunar_date.day != 10:day_char = '十' + self.number_dict[str(self.lunar_date.day % 10)]elif self.lunar_date.day // 10 == 2:day_char = '廿' + self.number_dict[str(self.lunar_date.day % 10)]elif self.lunar_date.day // 10 == 3:day_char = '三十'return day_char# 数字转成汉字def lunar_char_year_month_day(self):# 汉字字符年chinese_year = ''for digit in str(self.lunar_date.year):chinese_year += self.number_dict[digit]if self.number_dict[str(self.lunar_date.month)] == '一':lunar_month = '正'else:lunar_month = self.number_dict[str(self.lunar_date.month)]return chinese_year, lunar_month, self.num_convert_char()# 定义一个获取属相年的函数def get_animal_year(self):return self.animal_years[self.lunar_date.year % 12]if __name__ == '__main__':# 输入公历日期year = int(input("请输入年份:"))month = int(input("请输入月份:"))day = int(input("请输入日份:"))try:# 生成一个阳历日期对象solar_day = Lunar(year, month, day)weeknum, weekday = solar_day.get_weekday()# 转换为农历日期lunar_date = solar_day.convert_to_lunar_date()print('- ' * 30)print(f"阳历日期 : {solar_day.date:%Y/%m/%d}", end='\t')print(f"第{weeknum}周的{['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天'][weekday - 1]}")lunar_year, lunar_month, lunar_day = solar_day.lunar_char_year_month_day()if lunar_month == '十二':if lunar_day == '三十':print(f"阴历日期(农历): {lunar_year}年除夕(腊月三十)")else:print(f"阴历日期(农历): {lunar_year}年腊月{lunar_day}")else:print(f"阴历日期(农历): {lunar_year}{lunar_month}{lunar_day}")print(f'中国农历 : {solar_day.get_animal_year()}年')print('- '* 30)except ValueError as e:print(e)

代码说明:

该代码是一个 Python 类,用于将公历日期转换为农历日期并显示农历相关信息。它使用了 LunarDate 类来计算农历日期,并提供了 lunar_char_year_month_day() 方法来将农历日期转换为汉字。

使用方法:

  1. 输入公历日期(年份、月份、日份)。
  2. 代码将计算农历日期并打印以下信息:
    • 公历日期。
    • 公历日期的星期。
    • 农历日期。
    • 农历年的属相动物。

示例:

请输入年份:2024
请输入月份:5
请输入日份:24阳历日期 : 2024/05/2421周的星期五
阴历日期(农历): 二零二四年四月十七
中国农历 : 龙年

Screenshot 2024-05-24 at 17.31.51

代码中使用的类和方法:

  • Lunar 类:用于表示公历日期。
  • LunarDate 类:用于表示农历日期。
  • num_convert_char() 方法:将农历日期的日部分转换为汉字。
  • lunar_char_year_month_day() 方法:将农历日期转换为汉字。
  • get_animal_year() 方法:根据农历年份返回属相动物。

部分代码借鉴AI(自行搭建的AI大模型Ollama)。

相关文章:

编一个自己的万年历

编一个自己的万年历 前阶段突然想查一下某一天是星期几,于是自己编了一个[小程序][https://blog.csdn.net/weixin_41905135/article/details/138972055?spm1001.2014.3001.5501],但是功能很单一,就是单纯的查是星期几。(虽然用网…...

Golang gin框架中间件c.JSON返回结果后终止返回

gin框架中间件c.JSON返回结果后还是会继续执行之后的方法,我们可以用c.Abort()来终止后续的处理 func MiddlewareFunction(c *gin.Context) {// 假设有某种条件下需要返回错误if someCondition {c.JSON(http.StatusBadRequest, gin.H{"error": "som…...

码蹄集部分题目(2024OJ赛16期;单调栈集训+差分集训)

&#x1f9c0;&#x1f9c0;&#x1f9c0;单调栈集训 &#x1f96a;单调栈 单调递增栈伪代码&#xff1a; stack<int> st; for(遍历数组) {while(栈不为空&&栈顶元素大于当前元素)//单调递减栈就是把后方判断条件变为小于等于即可{栈顶元素出栈;//同时进行其他…...

安卓玩机搞机技巧综合资源----自己手机制作证件照的几种方法 免费制作证件照

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…...

揭秘循环购模式:消费返利新玩法,引领电商新潮流

在当今的消费市场中&#xff0c;有一种商业模式引起了广大消费者的热烈讨论——那就是循环购模式。你可能会想&#xff0c;消费满千元就能得到两千元的福利&#xff0c;每天还能领取现金&#xff0c;这怎么可能呢&#xff1f;商家难道真的在“慷慨解囊”&#xff1f;今天&#…...

【制作100个unity游戏之26】unity2d横版卷轴动作类游13(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言存储点灯光后处理存储位置信息存储更多数据存储场景信息持久化存储数据引入Unity 的可序列化字典类调用 游戏结束源码完结 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各…...

Golang使用HTTP框架zdpgo_resty实现文件下载

核心代码 代码解析&#xff1a; client.SetOutputDirectory("Downloads") 设置下载目录client.R().SetOutput("test.go").Get("http://127.0.0.1:3333/download 指定下载文件名并进行下载 // 设置输出目录路径&#xff0c;如果目录不存在&#xff…...

提取COCO 数据集的部分类

1.python提取COCO数据集中特定的类 安装pycocotools github地址&#xff1a;https://github.com/philferriere/cocoapi pip install githttps://github.com/philferriere/cocoapi.git#subdirectoryPythonAPI若报错&#xff0c;pip install githttps://github.com/philferriere…...

高刚性滚柱直线导轨有哪些优势?

滚柱导轨是机械传动系统中用于支持和引导滑块或导轨的装置&#xff0c;承载能力较高、刚性强及高精度等特点。特别适用于大负载和高刚性的工业设备&#xff0c;如机床、数控机床等设备&#xff0c;这些优势使其在工业生产和机械设备中得到了广泛的应用。 1、高精度&#xff1a;…...

KNN及降维预处理方法LDA|PCA|MDS

文章目录 基本原理模型介绍模型分析 python代码实现降维处理维数灾难 curse of dimensionality线性变换 Linear TransformationLDA - 线性判别分析LDA python 实现PCA - 主成分分析PCA最近重构性PCA最大可分性PCA求解及说明PCA python实现 多维缩放 Multiple Dimensional Scali…...

论文精读-SwinIR Image Restoration Using Swin Transformer

论文精读-SwinIR: Image Restoration Using Swin Transformer SwinIR:使用 Swin Transformer进行图像恢复 参数量&#xff1a;SR 11.8M、JPEG压缩伪影 11.5M、去噪 12.0M 优点&#xff1a;1、提出了新的网络结构。它采用分块设计。包括浅层特征提取&#xff1a;cnn提取&#…...

解释Spring Bean的生命周期

Spring Bean的生命周期涉及到Bean的创建、配置、使用和销毁的各个阶段。理解这个生命周期对于编写高效的Spring应用和充分利用框架的功能非常重要。下面是Spring Bean生命周期的主要步骤&#xff1a; 1. 实例化Bean Spring容器首先将使用Bean的定义&#xff08;无论是XML、注…...

CTF网络安全大赛web题目:字符?正则?

题目来源于&#xff1a;bugku 题目难度&#xff1a;难 题目描  述: 字符&#xff1f;正则&#xff1f; 题目htmnl源代码&#xff1a; <code><span style"color: #000000"> <span style"color: #0000BB"><?php <br />highl…...

Linux——Docker容器虚拟化平台

安装docker 安装 Docker | Docker 从入门到实践https://vuepress.mirror.docker-practice.com/install/ 不需要设置防火墙 docker命令说明 docker images #查看所有本地主机的镜像 docker search 镜像名 #搜索镜像 docker pull 镜像名 [标签] #下载镜像&…...

Transformer详解(3)-多头自注意力机制

attention multi-head attention pytorch代码实现 import math import torch from torch import nn import torch.nn.functional as Fclass MultiHeadAttention(nn.Module):def __init__(self, heads8, d_model128, droput0.1):super().__init__()self.d_model d_model # 12…...

运用HTML、CSS设计Web网页——“西式甜品网”图例及代码

目录 一、效果展示图 二、设计分析 1.整体效果分析 2.头部header模块效果分析 3.导航及banner模块效果分析 4.分类classify模块效果分析 5.产品展示show模块效果分析 6.版权banquan模块效果分析 三、HTML、CSS代码分模块展示 1. 头部header模块代码 2.导航及bann…...

大语言模型是通用人工智能的实现路径吗?【文末有福利】

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 关于大语言模型的内容&#xff0c;推荐参考这个专栏。 内容大纲 相关说明一、哲学与人工智能二、内容简介三、书籍简介与福利粉…...

c语言——宏offsetof

1.介绍 &#xff01;&#xff01;&#xff01; offsetof 是一个宏 2.使用举例 结构体章节的计算结构体占多少字节需要先掌握&#xff08;本人博客结构体篇章中已经讲解过&#xff09; 计算结构体中某变量相对于首地址的偏移&#xff0c;并给出说明 首先&#xff0c;结构体首个…...

C#串口通信-串口相关参数介绍

串口通讯(Serial Communication)&#xff0c;是指外设和计算机间&#xff0c;通过数据信号线、地线等&#xff0c;按位进行传输数据的一种双向通讯方式。 串口是一种接口标准&#xff0c;它规定了接口的电气标准&#xff0c;没有规定接口插件电缆以及使用的通信协议&#xff0c…...

节省时间与精力:用BAT文件和任务计划器自动执行重复任务

文章目录 1.BAT文件详解2. 经典BAT文件及使用场景3. 使用方法4. 如何设置BAT文件为定时任务5. 实例应用&#xff1a;自动清理临时文件 BAT文件&#xff0c;也就是批处理文件&#xff0c;是一种在Windows操作系统中自动执行一系列命令的文本文件。这些文件的扩展名为 .bat。通过…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性&#xff08;Basic Attributes&#xff09; 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...

raid存储技术

1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划&#xff0c;涵盖存储系统的布局、数据存储策略等&#xff0c;它明确数据如何存储、管理与访问&#xff0c;为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...

Java中栈的多种实现类详解

Java中栈的多种实现类详解&#xff1a;Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...

【Qt】控件 QWidget

控件 QWidget 一. 控件概述二. QWidget 的核心属性可用状态&#xff1a;enabled几何&#xff1a;geometrywindows frame 窗口框架的影响 窗口标题&#xff1a;windowTitle窗口图标&#xff1a;windowIconqrc 机制 窗口不透明度&#xff1a;windowOpacity光标&#xff1a;cursor…...

使用homeassistant 插件将tasmota 接入到米家

我写一个一个 将本地tasmoat的的设备同通过ha集成到小爱同学的功能&#xff0c;利用了巴法接入小爱的功能&#xff0c;将本地mqtt转发给巴法以实现小爱控制的功能&#xff0c;前提条件。1需要tasmota 设备&#xff0c; 2.在本地搭建了mqtt服务可&#xff0c; 3.搭建了ha 4.在h…...

claude3.7高阶玩法,生成系统架构图,国内直接使用

文章目录 零、前言一、操作指南操作指导 二、提示词模板三、实战图书管理系统通过4o模型生成系统描述通过claude3.7生成系统架构图svg代码转换成图片 在线考试系统通过4o模型生成系统描述通过claude3.7生成系统架构图svg代码转换成图片 四、感受 零、前言 现在很多AI大模型可以…...