java调用日期的包_Java日期时间API系列36-----Jdk8中java.time包中的新的日期时间API类应用,使用LocalTime计算十二时辰。...

packagecom.xkzhangsan.time.enums;importjava.time.LocalTime;importjava.util.Date;importjava.util.Objects;importcom.xkzhangsan.time.constants.Constant;importcom.xkzhangsan.time.converter.DateTimeConverterUtil;/*** 十二时辰枚举,包含英文全称,中文全称,时间范围

*

*@authorxkzhangsan

* @date 2020年08-01*/

public enumTwelveTwoEnum {

ZISHI(1, "子时", "23:00:00", "01:00:00"),

CHOUSHI(2, "丑时", "01:00:00", "03:00:00"),

YINSHI(3, "寅时", "03:00:00", "05:00:00"),

MAOSHI(4, "卯辰", "05:00:00", "07:00:00"),

CHENSHI(5, "辰时", "07:00:00", "09:00:00"),

SISHI(6, "巳时", "09:00:00", "11:00:00"),

WUSHI(7, "午时", "11:00:00", "13:00:00"),

WEISHI(8, "未时", "13:00:00", "15:00:00"),

SHENSHI(9, "申时", "15:00:00", "17:00:00"),

YOUSHI(10, "酉时", "17:00:00", "19:00:00"),

XUSHI(11, "戌时", "19:00:00", "21:00:00"),

HAISHI(12, "亥时", "21:00:00", "23:00:00"),;/*** 序号*/

private intcode;/*** 中文名称*/

privateString nameCn;/*** 开始时间*/

privateString startTime;/*** 结束时间*/

privateString endTime;private TwelveTwoEnum(intcode, String nameCn, String startTime, String endTime) {this.code =code;this.nameCn =nameCn;this.startTime =startTime;this.endTime =endTime;

}/*** 根据时间查询时辰名称枚举

*@paramlocalTime

*@returnTwelveHoursEnum*/

public staticTwelveTwoEnum getTwelveHoursEnum(LocalTime localTime){

Objects.requireNonNull(localTime,"localTime");for(TwelveTwoEnum twelveHours : TwelveTwoEnum.values()){

LocalTime timeStart=LocalTime.parse(twelveHours.getStartTime());

LocalTime timeEnd=LocalTime.parse(twelveHours.getEndTime());//子时,特殊计算

if(isZiShi(localTime, timeStart, timeEnd)){returnTwelveTwoEnum.ZISHI;

}if(isBetween(localTime, timeStart, timeEnd)) {returntwelveHours;

}

}return null;

}/*** 时间区间判断

*@paramlocalTime

*@paramtimeStart

*@paramtimeEnd

*@return在区间 true,不在 false*/

private static booleanisBetween(LocalTime localTime, LocalTime timeStart, LocalTime timeEnd) {return localTime.equals(timeStart) || (localTime.isAfter(timeStart) &&localTime.isBefore(timeEnd));

}/*** 是否子时

*@paramlocalTime

*@paramtimeStart

*@paramtimeEnd

*@return是 true, 否 false*/

private static booleanisZiShi(LocalTime localTime, LocalTime timeStart, LocalTime timeEnd) {//23点,0点

if(Constant.TWENTYTHREECLOCK.equals(localTime) ||LocalTime.MIDNIGHT.equals(localTime)){return true;

}//23-0点

if(localTime.isAfter(Constant.TWENTYTHREECLOCK) &&localTime.isBefore(LocalTime.MIDNIGHT)){return true;

}//0-1点

if(localTime.isAfter(LocalTime.MIDNIGHT) &&localTime.isBefore(Constant.ONECLOCK)){return true;

}return false;

}/*** 根据时间查询时辰名称

*@paramlocalTime

*@returnString*/

public staticString getNameCn(LocalTime localTime){

TwelveTwoEnum twelveHours=getTwelveHoursEnum(localTime);return twelveHours != null ? twelveHours.getNameCn() : null;

}/*** 根据时间查询时辰名称

*@paramdate

*@returnString*/

public staticString getNameCn(Date date){returngetNameCn(DateTimeConverterUtil.toLocalTime(date));

}public intgetCode() {returncode;

}publicString getNameCn() {returnnameCn;

}publicString getStartTime() {returnstartTime;

}publicString getEndTime() {returnendTime;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值