背景:商品的批次号规则为恒定为八位日期数字”yyyyMMdd”,如”20200520″,代表着该商品是2020年05月20日生产的,该商品的效期是恒定的,单位为月
需求:批次号输入的时候校验格式,通过批次号和效期得到生产日期和失效日期
方法:
一、建立批号工具类(BatchNumberUtil)
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @ClassName BatchNumberUtil
* @Description 批次号工具
* @Author 北海派
* @Date 2020/5/20 12:25
* @Version 1.0
**/
public class BatchNumberUtil {
private static final Logger log = LoggerFactory.getLogger("BatchNumberUtil.class");
/**
* 校验格式
*
* @param batchNumber 20200508
* @return
*/
public static boolean isValidDate(String batchNumber) {
boolean result = true;
if (!StringUtils.isEmpty(batchNumber)) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
try {
format.setLenient(false);
format.parse(batchNumber);
} catch (ParseException e) {
result = false;
log.error("批次号格式异常:{}", batchNumber);
}
} else {
result = false;
}
return result;
}
/**
* 获取生产日期和失效日期
*
* @param batchNumber 批次号
* @param month 效期(月数)
* @return
*/
public static List getDates(String batchNumber, Integer month) {
List dateList = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
Date production = null;
Date invalid;
if (!StringUtils.isEmpty(batchNumber) && month != null && month > 0) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
try {
format.setLenient(false);
production = format.parse(batchNumber);
} catch (ParseException e) {
log.error("批次号格式异常:{}", batchNumber);
}
if (null != production) {
calendar.setTime(production);
calendar.add(Calendar.MONTH, month);
invalid = calendar.getTime();
dateList.add(0, production);
dateList.add(1, invalid);
}
}
return dateList;
}
}
Original: https://www.cnblogs.com/java-bhp/p/12922911.html
Author: 包海鹏-郑州JAVA
Title: 商品批次号解析工具类
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/589035/
转载文章受原作者版权保护。转载请注明原作者出处!