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

news2024/11/23 10:35:17

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

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

实体类中的字段,添加自定义注解(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> {

    @Override
    public 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.coloradmin.cn/o/912174.html

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

相关文章

Echarts面积图2.0(范围绘制)

代码&#xff1a; // 以下代码可以直接粘贴在echarts官网的示例上 // 范围值 let normalValue {type: 内部绘制,minValue: 200,maxValue: 750 } // 原本的绘图数据 let seriesData [820, 932, 901, 934, 1290, 1330, 1320] let minData Array.from({length: seriesData.len…

Android创建签名文件,并获取签名文件MD5,SHA1,SHA256值

一、创建Android签名文件 使用Android Studio开发工具&#xff0c;可视化窗口进行创建 第一步&#xff1a;点击AndroidStudio导航栏上的 Build→Generate Signed Bundle / APK 第二步&#xff1a;选择APK选项 第三步&#xff1a;创建签名文件 第四步&#xff1a;输入创建签名的…

数字化系统如何让企业增收?数字化转型如何做到“业务为先”?

很多时候企业往往觉得自己一定要用更高端、更先进的系统才算是完成了数字化转型&#xff0c;但事实是这样的数字化转型往往伴随着大量时间、精力甚至是财力的投入&#xff0c;还一点收益都见不到。对于大部分企业来说&#xff0c;数字化转型是一个持久战&#xff0c;因此&#…

STL---list

目录 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用注意事项 2.list接口介绍及模拟实现 2.1构造​编辑 2.2容量 2.3修改 3.list迭代器 4.迭代器失效 5.模拟实现 6.vector和list的区别 1. list的介绍及使用 1.1 list的介绍 list的文档介绍 1. list是可以在常…

第十四课:采用 Qt 开发翻页/分页/多页窗体组件

功能描述&#xff1a;采用 Qt 开发一个翻页/分页/多页的窗体组件&#xff0c;封装为 QWidget 的子类&#xff0c;在你的应用程序中可直接使用。 一、最终演示效果 本次制作的翻页/分页/多页窗体组件是基于 Qt 开发&#xff0c;整个程序封装成 PageWidget 类&#xff0c;继承于…

Mac桌面小部件:Widgetter

Widgetter是一个基于Python的Web应用程序&#xff0c;用于创建和管理小部件的在线平台。该平台可以让用户轻松地创建和定制各种小部件&#xff0c;包括时钟、计算器、天气预报、地图等等。Widgetter还提供了一套易于使用的工具和界面&#xff0c;供用户进行小部件的编辑和布局。…

vue3 基础知识 (组件之间的通信 and vuex) 02

侬好哇 &#xff01;&#x1f60d; 文章目录 一、组件的通信 &#xff08;父传子&#xff09;二、非 Prop 的Attribute (属性&#xff09;三、组件的通信 &#xff08;子传父&#xff09;四、非父子组件的相互通信&#xff08;Provide/Inject&#xff09;五、非父子组件的相互通…

FPGA使用MIG调用SODIMM内存条接口教程,提供vivado工程源码和技术支持

目录 1、前言免责声明 2、SODIMM内存条简介3、设计思路框架视频输入视频缓存MIG配置调用SODIMM内存条VGA时序视频输出 4、vivado工程详解5、上板调试验证6、福利&#xff1a;工程代码的获取 1、前言 FPGA应用中&#xff0c;数据缓存是一大重点&#xff0c;不管是图像处理还是A…

蓝牙防丢器(附HS6621芯片选型)

在繁忙的生活中&#xff0c;我们往往会因为疏忽而丢失贵重物品&#xff0c;如钱包、钥匙、手机等&#xff0c;给生活带来不小的麻烦。然而&#xff0c;现代科技正为我们提供一种聪明的解决方案——蓝牙防丢器。这款小巧智能的装置不仅保护您的财物&#xff0c;还为您的生活带来…

无涯教程-PHP - sql_regcase()函数

sql_regcase() - 语法 string sql_regcase (string string) 可以将sql_regcase()函数视为实用程序函数&#xff0c;它将输入参数字符串中的每个字符转换为包含两个字符的带括号的表达式。 sql_regcase() - 返回值 返回带括号的表达式字符串以及转换后的字符。 sql_regcase…

隧道vs免费爬虫ip:为何要选择隧道爬虫ip?

在网络爬虫的世界中&#xff0c;爬虫ip是一项关键技术&#xff0c;它可以帮助我们隐藏身份、突破限制、提高抓取效率。但是&#xff0c;在选择爬虫ip时&#xff0c;我们常常会面对隧道爬虫ip和免费爬虫ip之间的抉择。在本文中&#xff0c;我们将探讨隧道爬虫ip相对于免费爬虫ip…

再谈一下DDD中的聚合设计

何为聚合 在领域模型中&#xff0c;一些实体或者值对象具有强而有力的业务关联关系&#xff0c;于是这些对象就组成了一个聚合&#xff0c;聚合内部的业务实体之间必须保证状态一致性。从技术角度来看&#xff0c;聚合是数据修改与持久化的基本单元&#xff0c;聚合内数据修改…

docker实践作业

1.安装docker服务&#xff0c;配置镜像加速器 2.下载系统镜像&#xff08;Ubuntu、 centos&#xff09; 3.基于下载的镜像创建两个容器 &#xff08;容器名一个为自己名字全拼&#xff0c;一个为首名字字母&#xff09; 4.容器的启动、 停止及重启操作 5.怎么查看正在运行的容器…

SpeedBI数据可视化工具:浏览器上做分析

SpeedBI数据分析云是一种在浏览器上进行数据可视化分析的工具&#xff0c;它能够将数据以可视化的形式呈现出来&#xff0c;并支持多种数据源和图表类型。 所有操作&#xff0c;均在浏览器上进行 在浏览器中打开SpeedBI数据分析云官网&#xff0c;点击【免费使用】进入&#…

Faster RCNN网络数据流总结

前言 在学习Faster RCNN时&#xff0c;看了许多别人写的博客。看了以后&#xff0c;对Faster RCNN整理有了一个大概的了解&#xff0c;但是对训练时网络内部的数据流还不是很清楚&#xff0c;所以在结合这个版本的faster rcnn代码情况下&#xff0c;对网络数据流进行总结。以便…

生成式AI将催生出大量新的就业机会,倒逼14亿员工学习掌握新技能

尽管IBM的研报指出生成式AI的普及将为未来三年内的14亿劳动力带来必须学习和掌握新技能的挑战&#xff0c;但它也强调这股浪潮不会引发失业潮&#xff0c;相反&#xff0c;它将催生出大量新的就业机会。生成式AI被认为将在各种商业模式中发挥重要作用&#xff0c;为企业提供了利…

STM32CubeMx配置HAL库PWM

PWM简介 PWM(Pulse Width Modulation)是脉冲宽度调制的缩写&#xff0c;是一种利用微处理器的数字输出来对模拟电路进行控制的技术。PWM的原理是 通过调节占空比来调节脉冲宽度&#xff0c;从而改变输出电压的大小。波形图如下 PWM的两个重要参数为频率和占空比。频率是周期…

【最新附安装包】UG NX2023安装教程(CAD/CAM)

软件下载 软件&#xff1a;UG NX版本&#xff1a;2023语言&#xff1a;简体中文大小&#xff1a;10.78G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU3.0GHz 内存8G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.baidu.c…

(动态规划) 剑指 Offer 10- II. 青蛙跳台阶问题 ——【Leetcode每日一题】

❓剑指 Offer 10- II. 青蛙跳台阶问题 难度&#xff1a;简单 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97&#xff08;1000000007&#xff09;&#xff0c;如计算初始结果为&#xff1a;1…

2023企业数智化转型的正确打开方式是什么?他这样说(三)

哈喽~又见面了大家&#xff01;上两期我们说到了数据在数智化转型中的重要性以及监控在数智化转型中的角色&#xff0c;戳这里↓↓↓&#xff0c;一键回放精彩内容 2023企业数智化转型的正确打开方式是什么&#xff1f;他这样说&#xff08;一&#xff09;https://mp.csdn.net…