DateUtil

import lombok.extern.slf4j.Slf4j;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * @Author: Judge
 * @Date: 2019/6/17 15:49
 */
@Slf4j
public class DateUtils {
    /**
     * 时间格式(yyyy-MM-dd)
     */
    public final static String DATE_PATTERN = "yyyy-MM-dd";
    /**
     * 时间格式(yyyy-MM-dd HH:mm:ss)
     */
    public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

    public static String format(Date date) {
        return format(date, DATE_PATTERN);
    }

    public static String format(Date date, String pattern) {
        if (date != null) {
            SimpleDateFormat df = new SimpleDateFormat(pattern);
            return df.format(date);
        }
        return null;
    }

    /**
     * 10位时间戳转换
     *
     * @param time
     * @param pattern
     * @return
     */
    public static String format(Long time, String pattern) {
        if (time != null) {
            Date date = new Date(time * 1000);
            SimpleDateFormat df = new SimpleDateFormat(pattern);
            return df.format(date);
        }
        return null;
    }

    /**
     * @return
     */
    public static Long GetThisSundaySeconds() {
        Calendar calendar1 = Calendar.getInstance();
        calendar1.setFirstDayOfWeek(Calendar.MONDAY);
        calendar1.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        //calendar1.add(Calendar.WEEK_OF_YEAR,1);
        calendar1.set(Calendar.HOUR_OF_DAY, 23);
        calendar1.set(Calendar.MINUTE, 59);
        calendar1.set(Calendar.SECOND, 59);
        return calendar1.getTimeInMillis() / 1000;
    }

    public static Long GetNextMonthSeconds() {
        Calendar calendar1 = Calendar.getInstance();
        calendar1.set(Calendar.MONTH, calendar1.get(Calendar.MONTH) + 1);
        calendar1.set(Calendar.DAY_OF_MONTH, 1);
        calendar1.set(Calendar.HOUR_OF_DAY, 0);
        calendar1.set(Calendar.MINUTE, 0);
        calendar1.set(Calendar.SECOND, 0);
        return calendar1.getTimeInMillis() / 1000;
    }

    /**
     * 10位时间戳转Date
     *
     * @param time
     * @return
     */
    public static Date TimestampToDate(Integer time) {
        long temp = (long) time * 1000;
        Timestamp ts = new Timestamp(temp);
        Date date = new Date();
        try {
            date = ts;
            //System.out.println(date);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return date;
    }

    /**
     * 获取当天凌晨时间
     *
     * @return
     */
    public static Date getTodayStartTime() {
        Calendar todayStart = Calendar.getInstance();
        todayStart.set(Calendar.HOUR_OF_DAY, 0);
        todayStart.set(Calendar.MINUTE, 0);
        todayStart.set(Calendar.SECOND, 0);
        todayStart.set(Calendar.MILLISECOND, 0);
        return todayStart.getTime();
    }


    /**
     * 获取当天晚上结束时间
     *
     * @return
     */
    public static Date getTodayEndTime() {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.set(Calendar.HOUR_OF_DAY, 23);
        todayEnd.set(Calendar.MINUTE, 59);
        todayEnd.set(Calendar.SECOND, 59);
        todayEnd.set(Calendar.MILLISECOND, 999);
        return todayEnd.getTime();
    }


    /**
     * 判断是否为新用户
     *
     * @param createTime
     * @return
     */
    public static Boolean isNewUser(Long createTime) {
        return createTime >= 1552233600;
    }


    /**
     * 取得本周
     * update by vincent 2019-08-29 废弃
     */
    public static Integer getThisWeek_bak() {
        Calendar calendar = Calendar.getInstance();
        int yw = calendar.get(Calendar.YEAR) * 100 + (calendar.get(Calendar.WEEK_OF_YEAR));
        switch (yw) {
            case 201901:
                yw = 201801;
                break;
            default:
                break;
        }
        return yw;
    }

    /**
     * 取得本周
     * 获取年末周的BUG优化
     */
    public static Integer getThisWeek() {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY);

        if (calendar.get(Calendar.MONTH) == 11) {
            calendar.set(Calendar.WEEK_OF_YEAR, 1);
            calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + 1);
        }
        int yw = calendar.get(Calendar.YEAR) * 100 + (calendar.get(Calendar.WEEK_OF_YEAR));
        return yw;
    }

    /**
     * 取得上周
     *
     * @return update by vincent 2019-08-29
     */
    public static Integer getLastWeek() {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
//        int yearWeek = calendar.get(Calendar.YEAR) * 100 + (calendar.get(Calendar.WEEK_OF_YEAR) - 1);
//        switch (yearWeek){
//            case 201800:
//            case 201900:
//                yearWeek = 201852;break;
//            case 201901:yearWeek = 201801;
//               break;
//            default:break;
//        }

        //取得上周
        Long lastDateS = calendar.getTimeInMillis() - (7 * 86400000);
        calendar.setTime(new Date(lastDateS));
        int yearWeek = calendar.get(Calendar.YEAR) * 100 + (calendar.get(Calendar.WEEK_OF_YEAR));
        return yearWeek;
    }

    /**
     * 取得上个月的 年月
     *
     * @return
     */
    public static Integer getLastMonth() {
        Calendar cal = Calendar.getInstance();
        int yearMonth = cal.get(Calendar.YEAR) * 100 + cal.get(Calendar.MONTH);
        return yearMonth;
    }

    /**
     * 获取这个月的年月
     *
     * @return
     */
    public static Integer getThisMonth() {
        Calendar cal = Calendar.getInstance();
        int yearMonth = cal.get(Calendar.YEAR) * 100 + cal.get(Calendar.MONTH) + 1;
        return yearMonth;
    }

    /**
     * 判断当前时间是否在活动期间
     *
     * @return
     */
    public static Integer taskDouble() {
        Integer formatInt = ToDayInteger();
        if (formatInt >= 20191001 && formatInt <= 20191007) {
            return 2;
        }
        return 1;
    }

    public static Integer taskDouble(Integer day) {
        if (day >= 20190501 && day <= 20190503) return 2;
        return 1;
    }

    public static boolean isWeekend() {
        Calendar cal = Calendar.getInstance();
        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
            return true;
        } else {
            return false;
        }
    }


    /**
     * 获取今天零点的时间戳
     *
     * @return
     */
    public static Long getToDayStartTimestamp() {
        Calendar calendar = Calendar.getInstance();
        Date date = calendar.getTime();
        Long time = date.getTime() / 1000;
        long zero = time - (time + 8 * 3600) % 86400;
        return zero;
    }

    /**
     * 获取今天23:59:59的时间戳
     *
     * @return
     */
    public static Long getToDayEndTimestamp() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
        return calendar.getTime().getTime() / 1000;
    }

    /**
     * 将当天时间转为Integer,格式(Ymd)
     *
     * @return
     */
    public static Integer ToDayInteger() {
        String formatStr = format(new Date(), DATE_PATTERN);
        return Integer.parseInt(formatStr.replace("-", ""));
    }


    /**
     * 获取这周日的时间
     *
     * @param format
     * @return
     */
    public static String getThisSunday(String format) {
        Calendar calendar = Calendar.getInstance(Locale.CHINA);
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.set(Calendar.DAY_OF_WEEK, 1);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        //calendar.add(Calendar.WEEK_OF_YEAR,1);
        return format(calendar.getTime(), format);
    }

    /**
     * 获取本周一的时间
     *
     * @return
     */
    public static String getThisMondy(String format) {
        Calendar calendar = Calendar.getInstance(Locale.CHINA);
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        // calendar.add(Calendar.WEEK_OF_YEAR,-1);
        return format(calendar.getTime(), format);
    }

    /**
     * 获取上周日的时间 按照中国人的理解就是上周日 中国人一周从周一开始
     *
     * @param format
     * @return
     */
    public static String getLastSunday(String format) {
        Calendar calendar = Calendar.getInstance(Locale.CHINA);
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        calendar.add(Calendar.WEEK_OF_YEAR, -1);
        return format(calendar.getTime(), format);
    }

    /**
     * 获取上周一的时间
     *
     * @return
     */
    public static String getLastMondy(String format) {
        Calendar calendar = Calendar.getInstance(Locale.CHINA);
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        calendar.add(Calendar.WEEK_OF_YEAR, -1);
        return format(calendar.getTime(), format);
    }

    //获取本周是今年的第几周,格式year + week
    public static Integer getWeek() {
        Calendar c = Calendar.getInstance();
        c.setFirstDayOfWeek(Calendar.MONDAY);
        int w = c.get(Calendar.WEEK_OF_YEAR);
        int y = c.get(Calendar.YEAR);
        return Integer.parseInt(y + "" + w);
    }

    /**
     * 获取本周开始时间戳
     *
     * @return
     */
    public static Long getWeekStart() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar ca = Calendar.getInstance();
        ca.setFirstDayOfWeek(Calendar.MONDAY);
        ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        ca.set(Calendar.HOUR_OF_DAY, 0);
        ca.set(Calendar.MINUTE, 0);
        ca.set(Calendar.SECOND, 0);
        String start = sdf.format(ca.getTime());
        Date date = new Date();
        try {
            date = sdf.parse(start);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date.getTime() / 1000;
    }

    /**
     * 获取本周结束时间戳
     *
     * @return
     */
    public static Long getWeekEnd() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar ca = Calendar.getInstance();
        ca.setFirstDayOfWeek(Calendar.MONDAY);
        ca.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        ca.set(ca.get(Calendar.YEAR), ca.get(Calendar.MONTH), ca.get(Calendar.DATE), 23, 59, 59);
        String end = sdf.format(ca.getTime());
        Date date = new Date();
        try {
            date = sdf.parse(end);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date.getTime() / 1000;
    }

    /**
     * 获取几天前0点时间戳,单位:秒
     *
     * @return
     */
    public static Long getFewDays(Integer fewDays) {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.add(Calendar.DAY_OF_YEAR, -fewDays);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        return calendar.getTime().getTime() / 1000;
    }

    /**
     * 获取当前时间戳
     *
     * @return
     */
    public static Long getNow() {
        Long time = System.currentTimeMillis() / 1000;
        return time;
    }

    /**
     * 获取月榜第几期
     *
     * @return
     */
    public static Integer getMonthRankNum() {
        Calendar calendar = Calendar.getInstance();
        int y = calendar.get(Calendar.YEAR);
        int m = calendar.get(Calendar.MONTH);
        return (y - 2019) * 12 + (m + 2);
    }


    //获取昨天当前时间
    public static Integer getYesterdayNow() {
        Calendar calendar = Calendar.getInstance();     //当前时间
        calendar.add(Calendar.DAY_OF_YEAR, -1);
        Long dd = calendar.getTime().getTime() / 1000;
        return dd.intValue();
    }

    //获取系统当前时间,字符串类型
    public static String getStrDate() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //设置为东八区
        sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        Date newDate = new Date();
        String dateStr = sdf.format(newDate);
        return dateStr;
    }

    //获取系统当前时间Date类型,需要将字符串类型转成时间
    public static Date getDaDate() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //设置为东八区
        sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        Date date = new Date();
        String dateStr = sdf.format(date);

        //将字符串转成时间
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date newDate = null;
        try {
            newDate = df.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return newDate;
    }

    /**
     *      *
     * @return
     */
    public static boolean isActivityPeriod() {
        Integer toDay = ToDayInteger();
        if (toDay.equals(20191001) || toDay.equals(20191003) || toDay.equals(20191005) || toDay.equals(20191007)) {
            return true;
        }
        return false;
    }


    /**
     * 
     *
     * @return
     */
    public static boolean isActivityLuckyTurntable() {
        Integer toDay = ToDayInteger();
        if (toDay.equals(20191002) || toDay.equals(20191004) || toDay.equals(20191006)) {
            return true;
        }
        return false;
    }

    /**
     * 失效时间距离下月的时间秒数
     *
     * @return
     */
    public static Long getNextMonthExpireTime() {
        return DateUtils.GetThisSundaySeconds() - System.currentTimeMillis() / 1000;
    }

    /**
     * 失效时间距离下周的时间秒数
     *
     * @return
     */
    public static Long getNextWeekExpireTime() {
        //失效时间距离下周的时间秒数
        return DateUtils.GetNextMonthSeconds() - System.currentTimeMillis() / 1000;
    }

    public static void main(String[] args) throws InterruptedException {
       /* Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),00,00,00);
        long time = calendar.getTime().getTime() / 1000;
        System.out.println(time);*/
      /*  System.out.println(getLastMonth());
        System.out.println(DateUtils.GetThisSundaySeconds() - System.currentTimeMillis() / 1000);
        System.out.println(DateUtils.getThisMondy("M月d日") + "-" + DateUtils.getThisSunday("M月d日"));*/
        /*System.out.println(DateUtils.GetThisSundaySeconds() - System.currentTimeMillis() / 1000);
        System.out.println(DateUtils.getThisMondy("M月d日") + "-" + DateUtils.getThisSunday("M月d日"));
        System.out.println(DateUtils.getLastMondy("M月d日") + "-" + DateUtils.getLastSunday("M月d日"));*/
        /*Calendar calendar = Calendar.getInstance();     //当前时间
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.add(Calendar.DAY_OF_YEAR, -6);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);*/
        System.out.println(getFewDays(7));
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值