时间总结 --获取某天零点,某月前,一号零点......

本文详细介绍了在Java中如何获取特定日期的零点时间戳,包括几月前1号0点、几天前0点的日期以及指定时间戳所在月份的特定日期时间戳。同时,还涵盖了日期格式转换和时间戳与Date类型之间的转换方法,提供了实用的Java Time工具类操作。
摘要由CSDN通过智能技术生成

Time

获取零点

获取某天的零点时间戳

    /**
     * 获取传入参数时间戳所在天数的零点日期 时间戳
     * @param time
     * @return
     */
    public static Long getZeroDate (Long time) {
   
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date(time));
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        return calendar.getTime().getTime();
    }
}
// 法二
 long millsec = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0)
     .toEpochSecond(ZoneOffset.ofHours(8)) * 1000;

获取几月前1号0点的时间戳

    /**
     * 获取几月前1号0点0分0秒的时间戳
     * @param dateTimeMillis
     * @return
     */
    public static Long getMonthBegin(Long dateTimeMillis,int monthago){
   
        Calendar c = Calendar.getInstance();
        c.setTime(new Date(dateTimeMillis));
        Date date = new Date(dateTimeMillis);
        date.setDate(1);
        date.setHours(0);
        date.setMinutes(0);
        date.setSeconds(0);
        if(date.getMonth() - 1 <= 0){
   
            date.setYear(date.getYear() - 1);
            date.setMonth(12);
        }else {
   
            date.setMonth(date.getMonth() - monthago);
        }
        return date.getTime();
    }


    /**
     * 获取指定时间戳所在月份开始的时间戳/秒
     * @param dateTimeMillis 指定时间戳/毫秒
     * @return
     */
    public static Long getMonthBegin(Long dateTimeMillis) {
   
        Calendar c = Calendar.getInstance();
        c.setTime(new Date(dateTimeMillis));
 
        //设置为1号,当前日期既为本月第一天
        c.set(Calendar.DAY_OF_MONTH, 1);
        //将小时至0
        c.set(Calendar.HOUR_OF_DAY, 0);
        //将分钟至0
        c.set(Calendar.MINUTE, 0);
        //将秒至0
        c.set(Calendar.SECOND,0);
        //将毫秒至0
        c.set(Calendar.MILLISECOND, 0);
        // 获取本月第一天的时间戳
        return c.getTimeInMillis() / 1000;
    }

获取几天前的0点的日期

    /**
     * 获取相应天数前的0点的日期 
     * 相应天数后 把num 前面的- 取了
     * @param num
     * @return  Long
     */
    public static Long subDate (int num) {
   
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.add(Calendar.DATE, -num);//相应天数后
        return calendar.getTime().getTime();
    }

获取相应天前的日期yyyyMMdd

    /**
     * 获取相应天数前的日期yyyyMMdd
     * @param num
     * @return String
     */
    public static String subDateString (int num) {
   
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -num);
        Date date = calendar.getTime();
        return format.format(date);
    }

获取指定时间戳所在月份15号的时间戳/秒

    /**
     * 获取指定时间戳所在月份15号的时间戳/秒
     * @param dateTimeMillis 指定时间戳/毫秒
     * @return
     */
    public static Long getMonthMiddle(Long dateTimeMillis) {
   
        Calendar c = Calendar.getInstance();
        c.setTime(new Date(dateTimeMillis));
 
        //设置为当月最后一天
        c.set(Calendar.DAY_OF_MONTH, 15);
        //将小时至23
        c.set(Calendar.HOUR_OF_DAY, 23);
        //将分钟至59
        c.set(Calendar.MINUTE, 59);
        //将秒至59
        c.set(Calendar.SECOND,59);
        //将毫秒至999
        c.set(Calendar.MILLISECOND, 999);
        // 获取本月最后一天的时间戳
        return c.getTimeInMillis() / 1000;
    }

获取指定时间戳所在月份结束的时间戳/秒

    /**
     * 获取指定时间戳所在月份结束的时间戳/秒
     * @param dateTimeMillis 指定时间戳/毫秒
     * @return
     */
    public static Long getMonthEnd(Long dateTimeMillis) {
   
        Calendar c = Calendar.getInstance();
        c.setTime(new Date(dateTimeMillis));
 
        //设置为当月最后一天
        c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
        //将小时至23
        c.set(Calendar.HOUR_OF_DAY, 23);
        //将分钟至59
        c.set(Calendar.MINUTE, 59);
        //将秒至59
        c.set(Calendar.SECOND,59);
        //将毫秒至999
        c.set(Calendar.MILLISECOND, 999);
        // 获取本月最后一天的时间戳
        return c.getTimeInMillis() / 1000;
    }
测试Calendar
public class
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值