• 商品批次号解析工具类


    背景:商品的批次号规则为恒定为八位日期数字“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<Date> getDates(String batchNumber, Integer month) {
    
            List<Date> 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;
    
        }
    }
  • 相关阅读:
    hive查询结果输出到hdfs上
    重启mysql主从同步mongodb(tungstenreplicator)
    第二个MapReduce
    tungstenreplicator安装
    mysql
    整理requests和正则表达式爬取猫眼Top100中遇到的问题及解决方案
    requests和正则表达式爬取猫眼电影Top100练习
    selenium学习之查找元素(二)
    selenium学习之基本操作(一)
    像素坐标与逻辑坐标的转换
  • 原文地址:https://www.cnblogs.com/java-bhp/p/12922911.html
Copyright © 2020-2023  润新知