Java通过生日计算星座、生肖

java 文章 2022-12-01 13:57 825 0 全屏看文

AI助手支持GPT4.0

package cn.hutool.core.date;

import java.util.Calendar;
import java.util.Date;

/**
 * 星座 来自:https://blog.csdn.net/u010758605/article/details/48317881
 * 
 * @author looly
 * @since 4.4.3
 */
public class Zodiac {

	/** 星座分隔时间日 */
	private static final int[] dayArr = new int[] { 20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22 };
	/** 星座 */
	private static final String[] ZODIACS = new String[] { "摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "摩羯座" };
	private static final String[] CHINESE_ZODIACS = new String[] { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };

	/**
	 * 通过生日计算星座
	 * 
	 * @param date 出生日期
	 * @return 星座名
	 */
	public static String getZodiac(Date date) {
		return getZodiac(DateUtil.calendar(date));
	}

	/**
	 * 通过生日计算星座
	 * 
	 * @param calendar 出生日期
	 * @return 星座名
	 */
	public static String getZodiac(Calendar calendar) {
		if (null == calendar) {
			return null;
		}
		return getZodiac(calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
	}
	
	/**
	 * 通过生日计算星座
	 * 
	 * @param month 月,从0开始计数
	 * @param day 天
	 * @return 星座名
	 * @since 4.5.0
	 */
	public static String getZodiac(Month month, int day) {
		return getZodiac(month.getValue(), day);
	}

	/**
	 * 通过生日计算星座
	 * 
	 * @param month 月,从0开始计数,见{@link Month#getValue()}
	 * @param day 天
	 * @return 星座名
	 */
	public static String getZodiac(int month, int day) {
		// 在分隔日前为前一个星座,否则为后一个星座
		return day < dayArr[month] ? ZODIACS[month] : ZODIACS[month + 1];
	}

	// ----------------------------------------------------------------------------------------------------------- 生肖
	/**
	 * 通过生日计算生肖,只计算1900年后出生的人
	 * 
	 * @param date 出生日期(年需农历)
	 * @return 星座名
	 */
	public static String getChineseZodiac(Date date) {
		return getChineseZodiac(DateUtil.calendar(date));
	}

	/**
	 * 通过生日计算生肖,只计算1900年后出生的人
	 * 
	 * @param calendar 出生日期(年需农历)
	 * @return 星座名
	 */
	public static String getChineseZodiac(Calendar calendar) {
		if (null == calendar) {
			return null;
		}
		return getChineseZodiac(calendar.get(Calendar.YEAR));
	}

	/**
	 * 计算生肖,只计算1900年后出生的人
	 * 
	 * @param year 农历年
	 * @return 生肖名
	 */
	public static String getChineseZodiac(int year) {
		if (year < 1900) {
			return null;
		}
		return CHINESE_ZODIACS[(year - 1900) % CHINESE_ZODIACS.length];
	}
}


-EOF-

AI助手支持GPT4.0


国内超级便宜服务器

摸鱼人热门新闻聚合

钻级赞助商 我要加入

开发者在线工具

第三方支付技术请加QQ群

相关文章
使用lambda语法对对象集合 统计属性相同的个数大于2的数据
spring jdbctemplate 分页批量插入
作为一个程序员,有什么想对新人说的吗?
【超详细】手把手教你搭建MongoDB集群搭建
eclipse修改运行/debug的控制台输出量和行数
随便看看
怎么添加小程序支付功能? 4312
教育科技公司申请微信支付被拒绝? 4695
微信公众号免300认证教程 5776
小程序已经上线,作为管理员无法在小程序数据助手查看数据? 5187
小程序广告组件通过审核,但是小程序内没有显示广告? 4962
企业微信通讯录账号被管理员误/恶意删除,怎么办? 9389
问题? 8910
如何快速搭建抽奖助手小程序(无需代码知识) 6039
许涛 大哥在吗, 要解冻小程序的时候提示信息主体不一致, 能帮忙看下吗? 7343
小程序搜一搜全称搜索不显示 麻烦解决一下!谢谢 6671