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

news2024/9/22 23:25:38

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

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

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

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

相关文章

各地区-不同行业-就业、失业、工资144个指标(1990-2021年)

一、数据介绍 数据名称&#xff1a;各地区-不同行业-就业、失业、工资144个指标 数据年份&#xff1a;1990-2021年&#xff08;1990-2007缺失较多&#xff09; 数据样本&#xff1a;994条 数据整理&#xff1a;自主整理 二、参考文献 [1]戚聿东,刘翠花,丁述磊.数字经济发展…

数据库系统课设——基于python+pyqt5+mysql的酒店管理系统(可直接运行)--GUI编程

几个月之前写的一个项目&#xff0c;通过这个项目&#xff0c;你能学到关于数据库的触发器知识&#xff0c;python的基本语法&#xff0c;python一些第三方库的使用&#xff0c;包括python如何将前后端连接起来&#xff08;界面和数据&#xff09;&#xff0c;还有界面的设计等…

Python OCR 使用easyocr库将图片中的文章提取出来

Python OCR 使用easyocr库将图片中的文章提取出来 初环境内容步骤一&#xff1a;安装easyocr库步骤二&#xff1a;导入必要的库步骤三&#xff1a;创建OCR阅读器对象步骤四&#xff1a;指定要识别的图片路径步骤五&#xff1a;执行OCR识别并提取文章内容步骤六&#xff1a;遍历…

vscode如何关闭受限模式

受限模式旨在实现安全地浏览代码 第一步&#xff1a; 第二步&#xff1a;输入trust,找到Security.workspace.trust,取消勾选 第三步&#xff1a; 重启vscode.

企业都在用的热门客服系统

客户服务是现如今企业抢占市场的重要因素。客户越来越重视企业服务&#xff0c;而优质的客户服务也会为企业带来正向且长期的收益。而市场上这么多客户服务系统哪个好用&#xff1f; 企业选购好用的客户服务系统的时候要注意以下几点&#xff1a; 一、选购注意事项&#xff1…

TheGem主题 - 创意多用途和高性能WooCommerce WordPress主题/网站

TheGem主题概述 – 适合所有人的TheGem 作为设计元素、样式和功能的终极 Web 构建工具箱而设计和开发&#xff0c;TheGem主题将帮助您在几分钟内构建一个令人印象深刻的高性能网站&#xff0c;而无需触及一行代码。不要在编码上浪费时间&#xff0c;探索你的创造力&#xff01…

Python“牵手”1688商品详情数据采集方法,1688API申请步骤说明

1688平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范。 1688API接口是指通过编程的方式&#xff0c;让开发者能够通过HTTP协议直接访问1688平台的数据&#xff0c;包括商品信息、店铺信息、物流信息&#xff0c;评论数据&#xff0c;店铺订…

rtmp直播

技术要求&#xff1a;nginxnginx-rtmpffmpegVLC 跟着大佬走的&#xff1a; 传送门 准备工作&#xff1a; 首先需要一台公网ip的服务器 这是使用天翼云的弹性云主机&#xff1a;免费试用1个月 天翼云官网 点击关机&#xff0c;更多里面选择重置密码&#xff0c; 默认用户名为…

EMQ 成功通过 SOC 2 Type I 认证,为全球客户的数据安全保驾护航

近日,EMQ 正式地通过了国际权威鉴证标准 SOC 2 审计,并荣获国际四大会计师事务所之一颁发的 SOC 2 Type I 鉴证报告,这使其成为全球物联网 MQTT 消息服务的安全践行者。此次认证进一步证实,EMQ 为其旗下的全托管 MQTT 消息云服务 EMQX Cloud 以及企业级 MQTT 物联网接入平台 EM…

老师如何制作电子成绩单?

随着科技的不断进步&#xff0c;电子成绩单已经成为现代教育管理的一项重要工具。相较于传统的纸质成绩单&#xff0c;易查分电子成绩单具有方便快捷等各种优势&#xff0c;为学生、家长和学校带来了诸多便利。这篇文章就给大家介绍易查分电子成绩单的制作与操作步骤。 一、电子…

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测 目录 分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.BWO-TCN-Attention数据分类预测程序&#xff1b; 2.无Attention适用于MATLAB 2022b版及以上版本&#xf…

基于微信小程序的图书管理系统ljr9i

对图书管理的流程进行科学整理、归纳和功能的精简&#xff0c;通过软件工程的研究方法&#xff0c;结合当下流行的互联网技术&#xff0c;最终设计并实现了一个简单、易操作的图书管理小程序。内容包括系统的设计思路、系统模块和实现方法。系统使用过程主要涉及到管理员和用户…

供应链 | 大数据报童模型:基于机器学习的实践见解

论文解读&#xff1a;李欣 马玺渊 作者&#xff1a;Gah-Yi Ban, Cynthia Rudin 引用&#xff1a;Ban, Gah-Yi and Cynthia Rudin. The big data newsvendor: Practical insights from machine learning. Operations Research 67.1 (2019): 90-108. 文章链接&#xff1a;https…

零阶矩、一阶矩、二阶矩、…

数学中矩的概念来自物理学。在物理学中&#xff0c;矩是表示距离和物理量乘积的物理量&#xff0c;表征物体的空间分布。矩在统计学和图像中都有很重要作用&#xff0c;我们常用的Adam优化器其全称为自适应矩估计优化器。本文将介绍各阶矩的理解和不同场景的应用。 Key Words&a…

【初体验】使用微信开发工具

1.设置合法域名 2.微信登录用户信息获取 如果要求登录后&#xff0c;无法显示用户信息 则应该修改一下【调试基础库】 3.获取用户登录的openid index/index.wxml <view><button type"warn" bindtap"wxLogin">微信登录</button>授权码&…

记录一个用C#实现的windows计时执行任务的服务

记录一个用C#实现的windows计时执行任务的服务 这个服务实现的功能是每天下午六点统计一次指定路径的文件夹大小 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.IO; using Syst…

日撸代码300行:第66-68天(主动学习之 ALEC)

代码来自闵老师”日撸 Java 三百行&#xff08;61-70天&#xff09; 日撸 Java 三百行&#xff08;61-70天&#xff0c;决策树与集成学习&#xff09;_闵帆的博客-CSDN博客 本次代码的实现是基于高斯密度&#xff0c;ALEC算法原文是基于密度峰值&#xff0c;同样是基于密度聚类…

HTTPS 握手过程

HTTPS 握手过程 HTTP 通信的缺点 通信使用明文&#xff0c;内容可能被窃听(重要密码泄露)不验证通信方身份&#xff0c;有可能遭遇伪装(跨站点请求伪造)无法证明报文的完整性&#xff0c;有可能已遭篡改(运营商劫持) HTTPS 握手过程 客户端发起 HTTPS 请求 用户在浏览器里…

Spring之ioc容器

目录 1.简介 2.为什么学习Spring 3.Spring的核心特性 4.Spring ioc 容器的特点 5.Spring的注入方式 6.web整合容器 1.简介&#xff1a; Spring简介 Spring是一个开源框架&#xff0c;它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 Spring使用基本的J…

听GPT 讲Alertmanager源代码--notify

api/&#xff1a;这个目录包含了Alertmanager的API实现&#xff0c;包括v1和v2版本的API。 assets/&#xff1a;这个目录包含了静态资源文件&#xff0c;如HTML、JavaScript和CSS文件&#xff0c;它们用于构建Alertmanager的Web UI。 cmd/&#xff1a;这个目录包含了Alertmanag…