## 日常总结获取时间类之===>>>时间戳
前提:
在日常项目中,难免会遇到跟时间日期有关的功能需求
本文皆用 Java 8版本之前的java.util包中的 Date 和 Calendar来处理业务
所以最近博主研究之后在此总结一下===>>
直接上代码,总结包括心得都在代码中*(可随意修改):

1、获取时间戳 ------>>> 依据指定日期,指定格式

/** 1.获取时间戳         --->>> 根据指定日期,指定格式
     * 依据指定日期格式获取时间戳
     * @param format  日期格式:如   new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
     * @param date    日期:    如   2020-05-02 14:29:08    日期和格式一定要对应
     * @return        1588400948
     * 补充: 通过时间戳转换指定格式的日期方法:
     *        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(1588400948 * 1000L))
     *        返回String 类型         2020-05-02 14:29:08
     * @throws ParseException
     */
    public static Long getTimestamp(SimpleDateFormat format, String date) throws ParseException {
        Date dat = format.parse(date);
        long timestamp = dat.getTime();
        return timestamp/1000;
    }

2、获取绝对秒值------>>>指定年份的当前时间绝对秒(10位时间戳)

/** 2. 获取绝对秒值
     * 获取  指定年份  --->>>  的当前时间 绝对秒值
     * @param year  输入年份数值,比如去年 输入1,前年输入2
     * @return      返回 long类型的 时间戳   如:1561569227
     */
    public static Long getTimeYear(int year){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.YEAR,-year);
        Long time = calendar.getTimeInMillis();
        return time/1000;
    }

3、获取0点绝对秒值------>>>无参

/** 3. 获取 0点 绝对秒值      无参
     *  主要实现: 根据 new Date()获取
     *  获取今天时间的 0点 绝对秒值
     * @return  返回 long 类型的 13位时间戳
     */
    public static Long getTodayZeroTime(){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
        Calendar cal = Calendar.getInstance();
        try {
            cal.setTime(simpleDateFormat.parse( simpleDateFormat.format(new Date())));
        } catch (ParseException e) {
            e.getMessage();
        }
        return cal.getTimeInMillis();
    }

4、获取0点绝对秒值(13位)------>>>根据日期获取(日期格式可改变)

/** 4. 获取 0点 绝对秒值      -- 根据日期获取
     * 获取指定日期  的 0点绝对秒值 此处为13位 也可以是10位 ,都无所谓,根据自己需要 来写
     * 可以利用 getTimeInMillisToDate(Long timetemp,String format) 去查看 是否为 0点秒值 转换成功
     * @param date      指定日期 如 20200627
     * @param format    指定格式 必须要与 日期格式对应  如20200627 对应 yyyyMMdd  2020-06-27 对应 yyyy-MM-dd
     * @return          Long 类型的 时间戳  如:1593187200000       10位的需要/1000  结果为 1593187200
     */
    public static Long getZeroSecondTimeWithType(String date,String format){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        Calendar calendar = Calendar.getInstance();
        try {
            Date dat = simpleDateFormat.parse(date);
            calendar.setTime(dat);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return calendar.getTimeInMillis();
    }

5、获取0点绝对秒值------>>>根据10位时间戳

/** 5. 获取0点绝对秒值          --->  根据10位时间戳
     * 根据10位时间戳获取对应日期的0点绝对秒值
     * @param time
     * @return
     * @throws ParseException
     */
    public static Long getZeroTimestampWithTime(long time) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(sdf.format(new Date(time * 1000L)));
        return date.getTime()/1000;
        //Calendar cal = Calendar.getInstance();
        //cal.setTime(date);   第二种方法
        //return cal.getTimeInMillis()/1000;
    }

结束语:
希望我的这点代码能为刚刚步入java行业的小伙伴提供帮助,在此希望大家可以在java的道路越走越远,坚持下去,之后还会更新出获取日期,以及java8的一些替代获取日期、时间戳,谢谢大家!