zoukankan      html  css  js  c++  java
  • (Java) Date工具类

    package com.newpay.utils;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.time.LocalDate;
    import java.time.ZoneId;
    import java.time.ZonedDateTime;
    import java.time.temporal.TemporalAdjusters;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.TimeZone;
    
    public class DateUtil {
    
        /**
         * 判断当前时间是否在[startTime, endTime]区间,注意时间格式要一致
         *
         * @param nowTime   当前时间
         * @param startTime 开始时间
         * @param endTime   结束时间
         * @return
         * @author zyu
         */
        public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
            if (nowTime.getTime() == startTime.getTime()
                    || nowTime.getTime() == endTime.getTime()) {
                return true;
            }
    
            Calendar date = Calendar.getInstance();
            date.setTime(nowTime);
    
            Calendar begin = Calendar.getInstance();
            begin.setTime(startTime);
    
            Calendar end = Calendar.getInstance();
            end.setTime(endTime);
    
            if (date.after(begin) && date.before(end)) {
                return true;
            } else {
                return false;
            }
        }
    
        /**
         * 获取当月1号的时间戳
         *
         * @param timeStamp
         * @param timeZone
         * @return
         */
        public static Long getMonthStartTime(Long timeStamp, String timeZone) {
            Calendar calendar = Calendar.getInstance();// 获取当前日期
            calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
            calendar.setTimeInMillis(timeStamp);
            calendar.add(Calendar.YEAR, 0);
            calendar.add(Calendar.MONTH, 0);
            calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            return calendar.getTimeInMillis() / 1000;
        }
    
    
        /**
         * 获取前M天时间戳
         *
         * @param days 需要返回前几天
         * @return 例如:返回昨天 00:00:00时间戳,  days = 1
         */
        public static Long getMinusDays(Integer days) {
            ZonedDateTime ztime = LocalDate.now().minusDays(days).atStartOfDay(ZoneId.systemDefault());
            return ztime.toEpochSecond();
        }
    
        /**
         * 获取本月1号记录时间戳
         *
         * @return 例如:2020-01-01 00:00:00
         */
        public static int getMonthStartDate() {
            return (int) LocalDate.now()
                    .with(TemporalAdjusters.firstDayOfMonth())
                    .atStartOfDay()
                    .atZone(ZoneId.systemDefault())
                    .toEpochSecond();
        }
    
        /**
         * 获取本月最后一日
         *
         * @return 例如:2020-01-31 00:00:00
         */
        public static long getMonthEndDate() {
            return LocalDate.now()
                    .atTime(00, 00, 00)
                    .with(TemporalAdjusters.lastDayOfMonth())
                    .atZone(ZoneId.systemDefault())
                    .toEpochSecond();
        }
    
        /**
         * 获取上个月最后一天
         *
         * @return
         */
        public static long getLastMonthLastDate() {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.add(Calendar.DATE, -1);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            return calendar.getTime().getTime() / 1000;
        }
    
    
        /**
         * 获取上个月第一天
         *
         * @return
         */
        public static long getLastMonthFirstDate() {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.MONTH, -1);
            calendar.set(Calendar.DAY_OF_MONTH, 1);
            calendar.set(Calendar.HOUR_OF_DAY, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            return calendar.getTime().getTime() / 1000;
        }
    
        /**
         * 获取当前时间戳
         *
         * @return
         */
        public static long getNowTime() {
            return System.currentTimeMillis() / 1000;
        }
    
    
        /**
         * 获取今天凌晨零点零分零秒的时间戳
         *
         * @return
         */
        public static long getTodayZeroTimeTemp() {
            // 获取现在的时间毫秒数
            long current = System.currentTimeMillis();
            // 获取今天的零分零秒的毫秒数
            long zero = current / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset();
            return zero / 1000;
        }
    
    
        /**
         * 获取昨天凌晨零点零分零秒的时间戳
         *
         * @return
         */
        public static long getLastDayTimeTemp() {
            long lastTimeTwmp = getTodayZeroTimeTemp() - (24 * 60 * 60);
            return lastTimeTwmp;
        }
    
        /**
         * 依据传入字符串 返回 unix 时间戳
         *
         * @param strTime
         * @return
         */
        public static long getUnixTime(String strTime) {
            String retTime = null;
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date;
            try {
                date = dateFormat.parse(strTime);
                long unixTime = date.getTime();
                retTime = String.valueOf(unixTime);
                retTime = retTime.substring(0, 10);
            } catch (ParseException e) {
            }
    
            return Long.parseLong(retTime);
        }
    
        /**
         * 根据月份获取天数
         *
         * @param month 年和月 例:(2018-5)
         * @return count_day
         */
        public static int getCountDayByMonth(String month) {
            Calendar cld = Calendar.getInstance();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            try {
                cld.setTime(sdf.parse(month));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            int count_day = cld.getActualMaximum(Calendar.DAY_OF_MONTH);
            return count_day;
        }
    
        /**
         * 返回当前日期时间
         *
         * @return
         */
        public static String getCurrDate() {
            Date now = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String strDateNow = dateFormat.format(now);
            return strDateNow;
        }
    
        /**
         * 返回当前年
         *
         * @return 2018
         */
        public static String getCurrYearDate() {
            Date now = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");
            String strDateNow = dateFormat.format(now);
            return strDateNow;
        }
    
        /**
         * 返回当前年和月
         *
         * @return 2018
         */
        public static String getCurrMonthDate() {
            Date now = new Date();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
            String strDateNow = dateFormat.format(now);
            return strDateNow;
        }
    }
  • 相关阅读:
    替换掉一段 以 $ 开头 $ 结尾 的字符串
    react 中使用 codemirror2(在线代码编辑器)读取 yaml 文件
    第四篇:前端读取文件 | FileReader 对象及其属性
    umi 如何使用 Mock 模拟数据
    loading 动画 系列
    网站页面上标签页小图标的添加方式
    Linux tail命令
    Python实现字符串反转的方法
    Redis 配置远程访问
    消息队列
  • 原文地址:https://www.cnblogs.com/zyulike/p/12919125.html
Copyright © 2011-2022 走看看