Java 注解计算12生肖,java Data中获取年,根据生日日期获取生肖注解,根据输入时间获取生肖,自定义注解的方式获取生肖 根据年份时间获取十二生肖

        最近,开发中需要增加生肖,但是不想增加字段,于是通过注解的方式,实现生日与生肖的转换。

        话不多说,直接上代码,如下: 

实体类中的字段,添加自定义注解(ToChineseZodiacSerializer):

/**
* 生肖,根据生日计算生肖
*/
@JsonSerialize(using = ToChineseZodiacSerializer.class)
private Date birthdate;

自定义注解实现类,如下:

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;import java.io.IOException;
import java.util.Calendar;
import java.util.Date;/*** 根据年份时间获取十二生肖** @author cs* @date 2023/08/21*/
public class ToChineseZodiacSerializer extends JsonSerializer<Date> {@Overridepublic void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {String str = "";if (date == null) {return;}try {Calendar c = Calendar.getInstance();c.setTime(date);int year = c.get(Calendar.YEAR);switch (year % 12){case 0 :str = "申猴🐒";break;case 1 :str = "酉鸡🐥";break;case 2 :str = "戌狗🐕";break;case 3 :str = "亥猪🐖";break;case 4 :str = "子鼠🐀";break;case 5 :str = "丑牛🐂";break;case 6 :str = "寅虎🐅";break;case 7 :str = "卯兔🐇";break;case 8 :str = "辰龙🐉";break;case 9 :str = "巳蛇🐍";break;case 10 :str = "午马🐎";break;case 11 :str = "未羊🐏";break;default:// 不满足以上条件的默认输出这个语句str = "未知";}} catch (Exception e) {// 打印异常信息在程序中出错的位置及原因e.printStackTrace();}jsonGenerator.writeString(str);}}


如果本篇文章对你有帮助的话,很高兴能够帮助上你。

当然,如果你觉得文章有什么让你觉得不合理、或者有更简单的实现方法又或者有理解不来的地方,希望你在看到之后能够在评论里指出来,我会在看到之后尽快的回复你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/48622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研C语言进阶题库——更新51-60题

目录 51.银行系中有很多恒星&#xff0c;H 君晚上无聊&#xff0c;便爬上房顶数星星&#xff0c;H 君将整个银河系看做一个平面&#xff0c;左上角为原点&#xff08;坐标为&#xff08;1, 1&#xff09;&#xff09;。现在有 n 颗星星&#xff0c;他给每颗星星都标上坐标&…

使用 OpenCV Python 实现自动图像注释工具的详细步骤--附完整源码

注释是深度学习项目中最关键的部分。它是模型学习效果的决定因素。然而,这是非常乏味且耗时的。一种解决方案是使用自动图像注释工具,这大大缩短了时间。 本文是pyOpenAnnotate系列的一部分,其中包括以下内容。 1、使用 OpenCV 进行图像注释的路线图。 2、pyOpenAnnotate工…

常见前端面试之VUE面试题汇总二

4. slot 是什么&#xff1f;有什么作用&#xff1f;原理是什么&#xff1f; slot 又名插槽&#xff0c;是 Vue 的内容分发机制&#xff0c;组件内部的模板引擎使用 slot 元素作为承载分发内容的出口。插槽 slot 是子组件的一个模板 标签元素&#xff0c;而这一个标签元素是否显…

Electron学习2 使用Electron-vue和Vuetify UI库

Electron学习2 使用Electron-vue和Vuetify UI库 一、Electron-vue简介二、安装yarn三、创建Electron-vue项目1. 关于 electron-builder2. 安装脚手架3. 运行4. 打包应用程序 四、background.js说明1. 引入模块和依赖&#xff1a;2. 注册协议&#xff1a;3. 创建窗口函数&#x…

Mysql group by使用示例

文章目录 1. groupby时不能查询*2. 查询出的列必须在group by的条件列中3. group by多个字段&#xff0c;这些字段都有索引也会索引失效&#xff0c;只有group by单个字段索引才能起作用4. having条件必须跟group by相关联5. 用group by做去重6. 使用聚合函数做数量统计7. havi…

thinkphp开发的在线学习培训考试模拟考试做题练习系统带商城功能证书管理课程系统

thinkphp开发的在线学习培训考试模拟考试做题练习系统带商城功能证书管理课程系统 1、做题界面 2、前端UI的展示 3、带商城购物功能

【Redis从头学-8】Redis中的ZSet数据类型实战场景之用户积分榜

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Re…

大数据 算法

什么是大数据 大数据是指数据量巨大、类型繁多、处理速度快的数据集合。这些数据集合通常包括结构化数据&#xff08;如数据库中的表格数据&#xff09;、半结构化数据&#xff08;如XML文件&#xff09;和非结构化数据&#xff08;如文本、音频和视频文件&#xff09;。大数据…

Hadoop小结(上)

最近在学大模型的分布式训练和存储&#xff0c;自己的分布式相关基础比较薄弱&#xff0c;基于深度学习的一切架构皆来源于传统&#xff0c;我总结了之前大数据的分布式解决方案即Hadoop&#xff1a; Why Hadoop Hadoop 的作用非常简单&#xff0c;就是在多计算机集群环境中营…

页面禁用鼠标右键,禁用F12打开开发者工具!!!

文章目录 问题分析方法一方法二方法二问题 今天在浏览博主文章时发现无法复制页面上的内容,也无法F12打开开发者工具,更用不了鼠标右键,于是上网找了原因并亲测可用 分析 方法一 将 <body> 改成 <body oncontextmenu=self.event.returnValue=false>方法二 …

【面试经典150题】移除元素·JavaScript版

题目来源 大致思路&#xff1a;遍历数组&#xff0c;如果遇到值为val的元素&#xff0c;使用数组最后一个元素替换它。详细过程&#xff1a; /*** param {number[]} nums* param {number} val* return {number}*/ var removeElement function(nums, val) {let i0,nnums.leng…

链表的顶级理解

目录 1.链表的概念及结构 2.链表的分类 单向或者双向 带头或者不带头 循环或者非循环 3.无头单向非循环链表的实现 3.1创建单链表 3.2遍历链表 3.3得到单链表的长度 3.4查找是否包含关键字 3.5头插法 3.6尾插法 3.7任意位置插入 3.8删除第一次出现关键字为key的节点 …

R包开发一:R与Git版本控制

目录 1.安装Git 2-配置Git&#xff08;只需配置一次&#xff09; 3-用SSH连接GitHub(只需配置一次) 4-创建Github远程仓库 5-克隆仓库到本地 目标&#xff1a;创建的R包&#xff0c;包含Git版本控制&#xff0c;并且能在远程Github仓库同步&#xff0c;相当于发布在Github。…

详解C#-static void Main(string[] args)

目录 简介: 举例: 输出结果:​ 总结&#xff1a; 简介: 在C#中static void Main(string[] args)这个句话有什么作用&#xff0c;分别代表什么意思&#xff01;&#xff01; 这句话是入口函数的声明&#xff0c;指定了C#程序的入口点&#xff0c;并定义了一个名为”Main”静…

存储系统性能优化中IOMMU的作用是什么?

一、IOMMU原理 IOMMU(Input/Output Memory Management Unit)是一种用于管理计算机内存的技术,它允许将物理内存映射到虚拟地址空间。IOMMU通过使用专用的硬件来管理和优化内存访问,从而提高系统性能和稳定性。本文将详细介绍IOMMU的原理,并介绍一些应用案例和典型的问题解…

-bash: java: command not found笔记

文章目录 场景解决方案找java的方法find命令进行查找根据java进程找寻具体位置 场景 linux系统执行java命令时报错&#xff1a; -bash: java: command not found。 解决方案 可能是没有安装java(这种情况比较少)或者安装了java但是没有设置环境变量(一般是这种情况)。 找ja…

Android 12对“返回”按钮的处理带来的问题

在Android 12之前&#xff0c;按下“返回”按钮&#xff0c;会执行当前Activity的finish()方法。如果是在启动器Activity中按下“返回”按钮&#xff0c;则是结束App的运行。 Android 12改变了这一行为&#xff0c;具体见https://developer.android.google.cn/about/versions/1…

Hook免杀实战: 去除杀软的三环钩子

Hook的概念 什么是Hook Hook&#xff08;也被称为“挂钩子”&#xff09;是一种程序设计模式&#xff0c;它提供了一种方式去截获&#xff08;或者“挂钩子”在&#xff09;系统级别或者应用级别的函数调用、消息、事件等。通过使用Hook&#xff0c;开发者可以在不修改源程序…

将SonarLint集成到Git

1、搭建SonarQube服务器 下载SonarQube安装包 访问SonarQube官网&#xff08;https://www.sonarqube.org/downloads/&#xff09;下载最新版本的SonarQube Community Edition。解压安装包 将下载的压缩包解压到一个目录&#xff0c;例如&#xff1a;D:\sonarqube-community-7.…

基于Echarts的中国地图数据展示

概述 基于echarts的大数据中国地图展示&#xff0c;结合API定制&#xff0c;开发样式&#xff0c;监听鼠标事件&#xff0c;实现带参数路由跳转等自定义事件。 详细 一、概述 实际项目中大概率会遇到很多需要进行数据展示的地方&#xff0c;如折现图&#xff0c;柱状图等&…