Java日期时间API系列25Jdk8中java.time包中的新的日期时间API类,使用MonthDay计算十二星座。

编程

1.十二星座名称枚举

package com.xkzhangsan.time.enums;

importstatic com.xkzhangsan.time.constants.Constant.MONTHDAY_FORMAT_PRE;

import java.time.MonthDay;

import java.util.Objects;

/**

* 星座名称枚举,包含英文全称,中文全称,时间范围

*

* @ClassName: ConstellationNameEnum

* @Description: ConstellationNameEnum

* @author xkzhangsan

* @date 2020年02-29

*/

publicenum ConstellationNameEnum {

Aries(1, "白羊座", "03-21", "04-19"),

Taurus(2, "金牛座", "04-20", "05-20"),

Gemini(3, "双子座", "05-21", "06-21"),

Cancer(4, "巨蟹座", "06-22", "07-22"),

Leo(5, "狮子座", "07-23", "08-22"),

Virgo(6, "处女座", "08-23", "09-22"),

Libra(7, "天秤座", "09-23", "10-23"),

Scorpio(8, "天蝎座", "10-24", "11-22"),

Sagittarius(9, "射手座", "11-23", "12-21"),

Capricorn(10, "摩羯座", "12-22", "01-19"),

Aquarius(11, "水瓶座", "01-20", "02-18"),

Pisces(12, "双鱼座", "02-19", "03-20"),;

/**

* 序号

*/

privateint code;

/**

* 中文名称

*/

private String nameCn;

/**

* 开始时间

*/

private String startDate;

/**

* 结束时间

*/

private String endDate;

private ConstellationNameEnum(int code, String nameCn, String startDate, String endDate) {

this.code = code;

this.nameCn = nameCn;

this.startDate = startDate;

this.endDate = endDate;

}

/**

* 根据日期查询星座名称枚举

* @param monthDayStr MM-dd格式

* @return

*/

publicstatic ConstellationNameEnum getConstellationNameEnumByMonthDay(String monthDayStr){

Objects.requireNonNull(monthDayStr, "monthDayStr");

MonthDay monthDay = MonthDay.parse(MONTHDAY_FORMAT_PRE + monthDayStr);

for(ConstellationNameEnum constellationNameEnum : ConstellationNameEnum.values()){

MonthDay monthDayStart = MonthDay.parse(MONTHDAY_FORMAT_PRE + constellationNameEnum.getStartDate());

MonthDay monthDayEnd = MonthDay.parse(MONTHDAY_FORMAT_PRE + constellationNameEnum.getEndDate());

if (monthDay.equals(monthDayStart) || monthDay.equals(monthDayEnd)

|| (monthDay.isAfter(monthDayStart) && monthDay.isBefore(monthDayEnd))) {

return constellationNameEnum;

}

}

returnnull;

}

/**

* 根据日期查询星座中文名称

* @param monthDayStr MM-dd格式

* @return

*/

publicstatic String getNameCnByMonthDay(String monthDayStr){

ConstellationNameEnum constellationNameEnum = getConstellationNameEnumByMonthDay(monthDayStr);

return constellationNameEnum != null ? constellationNameEnum.getNameCn() : null;

}

/**

* 根据日期查询星座英文名称

* @param monthDayStr MM-dd格式

* @return

*/

publicstatic String getNameEnByMonthDay(String monthDayStr){

ConstellationNameEnum constellationNameEnum = getConstellationNameEnumByMonthDay(monthDayStr);

return constellationNameEnum != null ? constellationNameEnum.name() : null;

}

publicint getCode() {

return code;

}

public String getNameCn() {

return nameCn;

}

public String getStartDate() {

return startDate;

}

public String getEndDate() {

return endDate;

}

}

主要的方法为:public static ConstellationNameEnum getConstellationNameEnumByMonthDay(String monthDayStr),通过对输入的月日字符串和枚举中的起始时间对比得出星座。

星座名称和时间范围来自百度百科。

2. 应用

/**

* 根据日期查询星座中文名称

* @param monthDayStr MM-dd格式

* @return

*/

publicstatic String getConstellationNameCn(String monthDayStr){

return ConstellationNameEnum.getNameCnByMonthDay(monthDayStr);

}

/**

* 根据日期查询星座中文名称

* @param date

* @return

*/

publicstatic String getConstellationNameCn(Date date){

String monthDayStr = DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.MM_DD_FMT);

return ConstellationNameEnum.getNameCnByMonthDay(monthDayStr);

}

/**

* 根据日期查询星座英文名称

* @param monthDayStr MM-dd格式

* @return

*/

publicstatic String getConstellationNameEn(String monthDayStr){

return ConstellationNameEnum.getNameEnByMonthDay(monthDayStr);

}

 

测试代码:

/**

* 星座计算测试

*/

@Test

publicvoid constellationTest(){

System.out.println(DateTimeCalculatorUtil.getConstellationNameCn("02-29"));

System.out.println(DateTimeCalculatorUtil.getConstellationNameEn("02-29"));

//2020-05-01 的星座

System.out.println(DateTimeCalculatorUtil.getConstellationNameCn(DateTimeCalculatorUtil.getDate(2020, 5, 1)));

}

 

输出:

双鱼座

Pisces

金牛座

 

 

源代码地址:https://github.com/xkzhangsan/xk-time

 

以上是 Java日期时间API系列25Jdk8中java.time包中的新的日期时间API类,使用MonthDay计算十二星座。 的全部内容, 来源链接: utcz.com/z/513972.html

回到顶部